CentOS下添加自定义动态链接库目录

本文介绍了在CentOS中添加自定义动态链接库目录的三种方法:通过配置文件/etc/ld.so.conf、通过gcc参数指定和通过设置环境变量LD_LIBRARY_PATH。详细讲述了如何操作以及各种方法的适用场景,强调了ldconfig命令在更新动态库缓存中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vi /etc/ld.so.conf

分别添加了两个路径,每个路径占一行。编辑完后,重新加载库:

/sbin/ldconfig -v

命令ldconfig -v |grep "libaivse000"  查看系统是否有加载该库

缓存文件默认是/etc/ld.so.cache,此文件保存已经排好序的动态链接库名字列表。

总结:

1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到

2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。比如安装了一个到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程序运行时被找到。

3. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。

4. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。

5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下(更新动态缓存库)

6. ldconfig -p 命令可以查看每个动态库的路径

指定运行时动态库位置的三种方式

在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可通过三种方法来指定:方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径;方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径;方法三:在编译目标代码时指定该程序的动态库搜索路径。 
Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。

通过配置文件

 修改/etc/ld.so.conf文件。
 其文件内容为:
 [root@VM_24_16_centos etc]# cat /etc/ld.so.conf
 include ld.so.conf.d/*.conf
 [root@VM_24_16_centos etc]# 
 所以,可以在文件夹/etc/ld.so.conf.d/中添加自己的文件,例如:创建文件gx.conf,
 然后在文件中添加动态库路径,例如:
     /root/code/opencv/opencv-3.2.0/build/build/lib
 注意,保存退出之后需要执行命令ldconfig刷新当前缓存。

通过gcc参数指定

-Wl,-rpath=${LD_PATH}  #-Wl,-rpath=<动态库所在路径>
g++ ${RPATH} ./opencv_knn.cpp -o knn

通过设置环境变量

只对当前shell有效,关闭shell或者退出当前用户则环境变量配置及无效了。

export LD_LIBRARY_PATH=/root/code/opencv/opencv-3.2.0/build/build/lib
#LD_LIBRARY_PATH=<动态库所在位置>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值