设为首页 加入收藏

TOP

Linux 下创建静态库和动态库
2014-11-24 13:10:02 来源: 作者: 【 】 浏览:1
Tags:Linux 创建 静态 动态

4.生成库文件


编写函数代码


编译生成各目标文件


ar文件对目标文件归档,生成静态库文件。注意归档文件名必须以lib打头(可查看库文件命名规则)。




使用要点:


gcc-I参数后加上静态库头文件的路径。


gcc-L参数后加上库文件所在目录


gcc-l参数后加上库文件名,但是要去掉lib.a扩展名。


比如库文件名是libtest.a那么参数就是-ltest




编写如下两个文件,注意放在同一目录中


myalib.h //静态库头文件


myalib.c //静态库实现文件


生成目标文件




gcc-c myalib.c



执行完后会生成一个myalib.o文件




ar命令归档,格式为ar-rc <生成的档案文件名><.o文件名列表>


再次提醒,归档文件名一定要以lib打头,.a结尾。


ar-rc libtest.a myalib.o


执行完后会生成一个libtest.a文件




编写一个测试程序main.c,内容为


编译目标文件,注意要把静态库头文件的路径加到-I参数里面


gcc-I ./ -o main.o -c main.c


现在生成了一个main.o文件




生成可执行文件,注意要把静态库文件的路径加到-L参数里面,


把库文件名(去掉打头的lib和结尾的.a)加到-l参数后面。如下面所示




gcc-o main -L ./ main.o -ltest




此时就会生成一个名为main的可执行文件


另外,注意-l参数好象应该加到输入文件名的后面,否则会报错。




比如gcc-o main -L./ -ltest main.o就会提示


main.o(.text+0x11):In function `main':


:undefined reference to `test'


collect2:ld returned 1 exit status




执行可执行文件查看效果


执行./main,输出


test


说明执行成功。




gcc-fPIC --shared test.c -o libtest.so


生成libtest.so




编译可执行文件


gccmain.c -o main -I./ -L./ -ltest


指定加载库的路径,后面会详细介绍。


exportLD_LIBRARY_PATH=./:$LD_LIBRARY_PATH




执行./main,输出


test


说明执行成功。




5.库文件命名


GNU库的使用必须遵守LibraryGNU PublicLicense(LGPL许可协议)。该协议与GNU许可协议略有不同,开发人员可以免费使用GNU库进行软件开发,但必须保证向用户提供所用的库函数的源代码。


系统中可用的库都存放在/usr/lib/lib目录中。库文件名由前缀lib和库名以及后缀组成。根据库的类型不同,后缀名也不一样。共享库的后缀名由.so和版本号组成,静态库的后缀名为.a




静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称


动态库的名字一般为libxxxx.so.major.minorxxxx是该lib的名称,major是主版本号,minor是副版本号


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 指定库文件 下一篇Linux 的库文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)