2015新年第一篇博客,哈哈,这个2月还没写过博客呢,从现在开始继续!
一、创建静态库
在本例中将创建一个小型静态函数库libfoo,包含两个函数bill()、fred()
1、编辑两个文件bill.c和fred.c
bill.c
fred.c
2、将两个文件生成.o目标文件
gcc -c bill.c fred.c
3、通过.o目标文件生成库文件
ar crv libfoo.a bill.o fred.o
4、为函数库生成一个内容表(当你使用GNU的软件开发工具时,这一步骤不是必须的)
ranlib libfoo.a
5、为libfoo.a库创建对应的头文件foo.h(头文件名最好和库文件一个名,除去lib前缀)
好了,以上已经创建好库文件libfoo.a和对应的头文件foo.h,现在要使用这个库文件里面的函数。
编写应用程序program.c来调用库文件libfoo.a中的bill函数
编译程序:gcc -o program program.c -I. -L. -lfoo
说明:
-I表示头文件的路径
-L表示库文件的路径
-lfoo表示库文件路径下的库文件
二、创建动态库
1、创建文件test.c和对应的头文件test.h
test.c
test.h
2、编译生成动态库文件
gcc -o libtest.so -fpic -shared test.c
生成libtest.so动态库文件,最好库文件名只在源文件名前加lib前缀
现在要去引用这个动态库
program.c
编译生成可执行程序program
gcc -o program program.c -I. -L. -ltest
要注意一点是,编译静态库文件的时候要引用静态库文件和对应头文件的位置,
另外在使用program的程序的时候也要指定静态库文件存放的位置。有几种方法:
1)可以直接把*.so文件放在/usr/lib等公共目录下
2)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/** (保存.so文件的位置)