linux 库的编译方法

Linux下编译库

分类: Linux 101人阅读 评论(0) 收藏 举报
 

    一般为了不让他人看到源码,也为了维护,我们常把源码封装成一个一个的库,而库有静态库和动态库之分(根据链接时期的不同进行区分),静态库在编译的时候会被连接到目标代码中去,程序运行时不需要该库存在就能运行;动态库在编译时并不会被连接到目标代码中去,而是在程序运行过程中才载入,此时动态库必须存在。

    静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a, 动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀lib,但其文件扩展名为.so。
      1、动态库
      在Linux下,使用 gcc -shared XXX.c -o libXXX.so可以编译一个动态库,使用 gcc YYY.c -lXXX -L.就可以在编译其他程序时把库包含进来,编译好后,运行程序时(./YYY.out),可能提示库XXX找不到,这是因为程序运行时在/lib、/usr/lib等默认路径或LD_LIBRARY_PATH环境变量中查找,而没有找到的缘故,此时可以把库复制到/lib或/usr/lib目录下,也可以设置 LD_LIBRARY_PATH环境变量,或者 把当前路径加入 /etc/ld.so.conf中然后运行ldconfig等方法来解决该路径问题。
     2、静态库
     在Linux下,使用 gcc -c XXX.c生成XXX.o文件,再使用 ar -r libXXX.a XXX.o生成 libXXX.a静态库文件,使用 gcc YYY.c -lXXX -L. -static -o YYY.static就可以在编译其他程序时把库包含进来,编译好后,直接运行./ YYY.static就可以,不用管库存不存在。
     对于生成的静态或动态可执行文件,我们可以使用"ldd YYY文件名"命令来查看库是否存在,并且路径正确,同时,我们可以使用"time  YYY文件名"命令来查看用静态库和动态库包含进来的可执行程序的运行时间。
      在静态库和动态库同名并且在同一路径时,会优先把动态库连接到程序中去。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值