automake, 动态库编译,运行时的链接问题

     平时我们使用.so动态链接库时,可能没有遇到问题。 是因为项目编译相关的设定已经弄好了,生成的.so库被安装到

系统目录(如/usr/lib/ 或者/lib/)目录下了;或者 是个人写的测试代码,so就在当前目录下。

      如果使用make install将生成的可执行程序放到其他目录,执行程序时,会遇到动态链接库找不到的问题。

编译时所指定的动态库路径,只是用于编译过程。运行时,系统通过另外一个变量(LD_LIBRARY_PATH),

来表示动态链接库查找路径。

      那么在默认到情况下,如何进行搜索呢?

动态库的搜索路径搜索的先后顺序是:

  • 1 编译目标代码时指定的动态库搜索路径,LIBRARY_PATH【编译阶段】;
  • 2 在运行时,环境变量LD_LIBRARY_PATH指定的动态库搜索路径【运行阶段】;
  • 3 配置文件/etc/ld.so.conf中指定的动态库搜索路径【编译阶段】;
  • 4 默认的动态库搜索路径/lib【编译阶段】;
  • 5 默认的动态库搜索路径/usr/lib【编译阶段】

 

     附上两个介绍更为详细的链接:

     http://www.programgo.com/article/64203165348/

     https://blog.csdn.net/gx19862005/article/details/48528235

 

     关于Makefile的编写,推荐2个文章:

     跟我一起写Makefile : https://seisman.github.io/how-to-write-makefile/overview.html

     教你写Makefile: https://blog.csdn.net/alpha_love/article/details/62953847

 

     另外,附上一篇介绍libtool(使用过automake的人,对这个一定不会陌生)的文章:

     使用 GNU Libtool 创建库 : https://www.ibm.com/developerworks/cn/aix/library/1007_wuxh_libtool/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值