linux 动态库

动态库查找路径设置方法:

方法一:在配置文件 /etc/ld.so.conf 中指定动态库搜索路径。每次编辑完该文件后,都必须运行命令 ldconfig 使修改后的配置生效。

方法二:通过环境变量 LD_LIBRARY_PATH 指定动态库搜索路径。当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔。

方法三:在编译目标代码时指定该程序的动态库搜索路径。这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔。

gcc     -Wl,option

           Pass option as an option to the linker.  If option contains commas, it is split into multiple options at the commas.


动态库查找顺序:

1.编译目标代码时指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

4.默认的动态库搜索路径/lib;

5.默认的动态库搜索路径/usr/lib。


查看动态库或者可执行程序依赖的库文件命令:ldd 


动态库查找细节:

1)执行这个查找动作的linux程序:  /usr/bin/ld

2)这个程序参考的文件为:/etc/ld.so.conf,该文件保存着ld应该搜索的so文件路径。通常ld.so.conf.d这个文件夹下也保存着分文件,以供合成ld.so.conf

3)该程序实际参考的文件为:/etc/ld.so.cache. 这个文件其实基本上就是对/etc/ld.so.conf做了稍微的处理以利于/usr/bin/ld程序的参考。

4)将/etc/ld.so.conf 更新到/etc/ld.so.cache.的命令: ldconfig. 使用 ldconfig -p|less可以逐步查看从/usr/bin/ld 眼里的/etc/ld.so.cache的内容(路径)。

5)所以往/etc/ld.so.conf内做指定的路径,如/usr/lib等加入你需要程序搜索的动态库.so文件,不需要执行ldconfig更新。因为/etc/ld.so.cache中保存的就是目录,而不是具体的so文件。

6)向/etc/ld.so.conf添加路径。则需要调用ldconfig来更新/usr/bin/ld的搜索路径。


原帖:

http://blog.globstudio.com/373.html

http://yaronspace.cn/blog/archives/832

http://www.kuqin.com/linux/20080424/7471.html

http://blog.sina.com.cn/s/blog_93b45b0f01011of1.html

http://www.cnblogs.com/cute/archive/2011/02/24/1963957.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 动态库搜索路径是指在 Linux 系统下,动态链接器(ld)搜索和加载共享库(.so)时,按照一定的优先级和搜索路径去查找目标共享库的过程。 在 Linux 中,系统动态共享库的存放路径一般有如下几个: 1. /usr/lib:系统提供的共享库路径,一些常用的共享库会被安装在该目录下。 2. /lib:系统提供的另一个共享库路径,类似于 /usr/lib,但一些重要的共享库会被安装在该目录下,这些库通常是系统引导过程中需要的。 3. LD_LIBRARY_PATH 环境变量:如果设置了该环境变量,ld 将会在其所指定的路径中查找共享库,而不是在默认路径中查找。 4. /etc/ld.so.conf 文件:该文件指定了需要搜索的共享库路径,如果没有指定,ld 会使用默认路径搜索共享库。 5. /etc/ld.so.cache 文件:该文件记录了系统中已经安装的共享库和其路径信息,ld 可以通过该文件快速查找共享库,避免搜索时的性能损失。 在进行动态共享库链接时,系统动态链接器会按照以上搜索路径的优先级从上至下查找目标共享库。如果要修改默认的动态库搜索路径,可以在 /etc/ld.so.conf 中添加自定义库路径,并运行 ldconfig 命令更新缓存信息。 总之,动态库搜索路径是 Linux 下非常重要的概念,对于程序员和系统管理员而言,了解动态库搜索路径有助于更好地管理系统共享库,提高应用程序的可用性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值