linux编译静态库与动态库的实例,
我们简单的用实例来说明,
仅当抛砖引玉:
我这里所需要的.h,.c文件如下,
##############################
# test.h
##############################
void test( void );
##############################
# test.c
##############################
#include
#include "test.h"
void test( void )
{
printf("test.elf .a test\n");
}
##############################
# call.c
##############################
#include
#include "test.h"
int main()
{
test();
return 0;
}
Makefile如下:
##############################
# 动态库的生成
##############################
CFLAGS =
LD=ld -g -O2
GENLIB = libtest.so
###############################
#test c
###############################
OBJECTS += test.o
all: $(OBJECTS)
gcc $(CFLAGS) -shared -o $(GENLIB) $(OBJECTS)
%.o: %.c
gcc -std=gnu99 -D_GNU_SOURCE=1 -ldl $(CFLAGS) -o $@ -c $<
clean:
rm -rf *.o *~
##############################
# 动态库的调用
##############################
LIBS= -L ./ -ltest
###############################
#call c
###############################
OBJECTS += call.o
all: $(OBJECTS)
gcc -o xxx $(OBJECTS) $(LIBS)
%.o: %.c
gcc -D_GNU_SOURCE=1 -ldl $(LIBS) -o $@ -c $<
clean:
rm -rf *.o *~
##############################
# 静态库的生成
##############################
CFLAGS =
LD=ld -g -O2
GENLIB = libtest.a
###############################
#test c
###############################
OBJECTS += test.o
all: $(OBJECTS)
gcc $(CFLAGS) -shared -o $(GENLIB) $(OBJECTS)
%.o: %.c
gcc -std=gnu99 -D_GNU_SOURCE=1 -ldl $(CFLAGS) -o $@ -c $<
clean:
rm -rf *.o *~
##############################
# 静态库的调用
##############################
LIBS= -I. -L. -ltest
###############################
#call c
###############################
OBJECTS += call.o
all: $(OBJECTS)
gcc -o xxx $(OBJECTS) $(LIBS)
%.o: %.c
gcc -D_GNU_SOURCE=1 -ldl -o $@ -c $<
clean:
rm -rf *.o *~
静态库运行效果:
动态库运行效果: