日期:2014-05-16  浏览次数:20757 次

Linux静态库与动态库生成与调用实例

原文来自CSDN博客:http://blog.csdn.net/lizhiliang06/article/details/8773254

linux编译静态库与动态库的实例,

我们简单的用实例来说明,

仅当抛砖引玉:

我这里所需要的.h,.c文件如下,

##############################
#     test.h
##############################
void test( void );

##############################
#     test.c
##############################
#include <stdio.h>
#include "test.h"

void test( void )
{

     printf("test.elf .a test\n");
}

##############################
#     call.c
##############################
#include <stdio.h>
#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 *~


静态库运行效果:
动态库运行效果: