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

第三种方法测试有效,原文连接:https://blog.csdn.net/gx_1983/article/details/78352457

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

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

经过gcc参数指定

  • 经过gcc参数制定以后就不须要配置环境变量和配置文件了。
-Wl,-rpath=${LD_PATH} #-Wl,-rpath=<动态库所在路径> g++ ${RPATH} ./opencv_knn.cpp -o knn
  • 1
  • 2

经过设置环境变量

  • 只对当前shell有效,关闭shell或者退出当前用户则环境变量配置及无效了。
export LD_LIBRARY_PATH=/root/code/opencv/opencv-3.2.0/build/build/lib #LD_LIBRARY_PATH=<动态库所在位置>
  • 1
  • 2

经过配置文件

修改/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刷新当前缓存。
相关文章
相关标签/搜索