Linux静态库和动态库编译链接问题

linux静态库:一些.o文件的压缩包

二进制.o文件通过ar命令:ar crv libfoo.a a.o b.o

通过ranlib命令跟新符号表:ranlib libfoo.a

在链接的时候通过-L指定.a文件的位置,-l命令指定库的名称,如-lxx代表使用libxx.a库.静态库默认打包进可执行文件中的,当删除.a文件,可执行文件依旧可以执行。

linux动态库:可执行程序仅在运行需要调用时才会将将动态库载入内存,本身不包含动态库的内容。

通过gcc -shared -fPCI -o libxx.so xx.c来生成.so文件

在使用.so文件的时候,-lxx来指定动态库,一般是会在系统默认路径找,没找到会报错

配置:将路径加入LD_LIBARY_PATH,或者/etc/ld.so.conf文件,加入目录,然后ldconfig命令就可以完成加载

一般会有版本问题,用libxx.so链接文件来解决需要指定的版本。


一般系统会搜索是否有动态库,有就使用动态库,没有才使用静态库,强制使用静态库,可以在-lxx前加入-static开关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值