ldd xxx.so not found 解决方案

背景:假设有两个so, 一个libtarget.so, 一个libsource.so,然后想把source.so 链接到target.so里,使用g++ -Llib_path_of_source.so -lsource.so -o libtarget.so。遇到的问题是ldd target.so 时,提示我libsource.so not found .


解决思路:

1 将lib path of source.so 加入到LD_LIBRARY_PATH

LD_LIBRARY_PATH = $LD_LIBRARY_PATH:lib_path_of_source.so

这里如果提示recursive reference of LD_LIBRARY_PATH, 则将"=" 改成 “:=”


2 如果第一步之后还是不行,则尝试将lib_path_of_source.so加入到/etc/ld.so.conf,加完后记得运行ldconfig,使得你的更改生效


3 如果step 2还是不行,则尝试添加-Wl,-R选项,例如:
g++ -o libtarget.so -L/path_to_libsource.so/ -lsource.so \
    -Wl,-R/path_to_libsource.so/ sourceCode1.c ...
   -Wl,用于向连接器传递参数,
   -R, 用于告诉连接器.so的缺省搜索路径
(本人尝试完这一步就OK了)


4 如果还是不行,那么直接输入绝对路径吧,例如
g++ -o libtarget.so absolute_path_to_libsource.so sourceCode1.c ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值