库的链接路径

  1. 往往一个库可以被编译成静态库(lib*.a)也可以被编译成动态库(shared library,lib*.so),gcc 有“-shared” option.
  2. 在编译时如果头文件没在系统默认的地方(/usr/lib/inlude, etc.),那么需要在编译时用 -I includePath 指明头文件的位置,如果要连接的动态库没在系统默认的地方那么用 -L loadPath指明。
  3. 对于没在系统默认位置的动态库,在用 -L 指定load路径编译成功后,执行时还是会出现找不到库的错误,那么就需做以下几个方法之一去指定执行时的load路径:
    • 设置环境变量 “LD_LIBRARY_PATH
    • 修改配置文件/etc/lib.so.conf,把动态库所在的绝对路径写入其中,一个路径一行,然后运行ldconfig -v来生效,ldconfig命令生成/etc/ld.so.cache缓存文件,链接器就是从这个文件中搜索动态库。
    • 把动态库文件拷到系统默认的位置,/usr/lib或者/lib目录
    • 在编译时用-rpath loadPath 写死
  4. ld是链接器,ldd可以看一个文件的依赖库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值