MakeFile库链接问题

WB865365840 2016-09-27 09:03:54
近来在写Makefile时候遇到如下问题。

有库liba.so libb.so libc.so 都在我的工程目录下,比如 /home/wb/code/project/lib

liba.so依赖于libb.so 和 libc.so

个人的代码中只用到了liba.so中的代码,我的Makefile就强行指定了
-Wl,-rpath= /home/wb/code/project/lib -la

这样编译是没有问题的,但是运行起来的时候会提示找不到 libb.so.....

用ldd 去看可执行文件,也能看到 执行文件 的lib列表中确实需要libb.so 和 libc.so, 但是后面的说明找不到库文件

我也使用了-Wl,-rpath= /home/wb/code/project/lib -lb -lc 去尝试过
同时用 -L 指定了库文件位置 ,但还是上述的错误

有大神能解决一下吗。


现在我只好把libb.so libc.so 拷贝到了 系统的目录下进行后续开发。
...全文
2489 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2019-11-05
  • 打赏
  • 举报
回复

-Wl,-rpath= /home/wb/code/project/lib
^ 检查一下这里是不是有个空格?
mymtom 2019-11-05
  • 打赏
  • 举报
回复
链接时指定rpath是不错的方法,没遇到过问题,楼主能不能确认一下是不是拼写错误


-Wl,-rpath= /home/wb/code/project/lib
^ 检查一下这里是不是有个空格?
new_delete_ 2019-10-18
  • 打赏
  • 举报
回复
动态库的机制问题,在编译时需要你指定动态库的位置完成编译,在程序执行时,要在系统库目录下查找动态库,比如ubuntu下动态库编译后的路径要加到/etc/ld.so.conf 文件中,再用ldconfig命令(或重启)使路径生效
老衲笑纳了 2017-06-01
  • 打赏
  • 举报
回复
引用 1 楼 xuweiwei1860 的回复:
动态链接库就是要跟着运行程序放着,想不找库就生成静态的直接连接到编译结果里面吧
动态库有时候挺难用的 突然间不为啥就找不到了。。。。
WB865365840 2016-09-28
  • 打赏
  • 举报
回复
引用 1 楼 xuweiwei1860 的回复:
动态链接库就是要跟着运行程序放着,想不找库就生成静态的直接连接到编译结果里面吧
还是要用动态链接,但是希望运行程序找库时优先找我指定的文件目录,而不是系统目录,同时,也不希望更改LD_LIBRARY_PATH的值,因为想把这个项目做成一个可移动的,即使拷贝到了其他电脑上,直接编译,运行就可以,不想再进行多余的配置。
fly 100% 2016-09-28
  • 打赏
  • 举报
回复
动态链接库就是要跟着运行程序放着,想不找库就生成静态的直接连接到编译结果里面吧

742

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨Linux系统在IBM Power平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • Power Linux社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧