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

众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。方法一:在配置文件 /etc/ld.so.conf 中指定动态库搜索路径。每次编辑完该文件后,都必须运行命令 ldconfig 使修改后的配置生效 。我们通过例 1 来说明该方法。例 1 :我们通过以下命令用源程序 pos_conf.c (见程序 1 )来创建动态库 libpos.so ,# gcc –fpic -shared  -o libpos.so pos_conf.c
接着通过以下命令编译 main.c (见程序 2 )生成目标程序 pos 。# gcc -o pos main.c -L. -lpos
方法二:通过环境变量 LD_LIBRARY_PATH 指定动态库搜索路径。方法三:在编译目标代码时指定该程序的动态库搜索路径。还可以在编译目标代码时指定程序的动态库搜索路径。 -Wl, 表示后面的参数将传给 link 程序 ld (因为 gcc 可能会自动调用ld )。这里通过 gcc 的参数 "-Wl,-rpath," 指定(如例 3 所示)。当指定多个动态库搜索路径时,路径之间用冒号 " : " 分隔。例 3 :我们通过以下命令用源程序 pos.c (见程序 4 )来创建动态库 libpos.so 。# gcc -c pos.c # gcc -shared -fic -o libpos.so pos.o #因为我们需要在编译目标代码时指定可执行文件的动态库搜索路径,所以需要用 gcc 命令重新编译源程序 main.c( 见程序 2) 来生成可执行文件 pos 。# gcc -o pos main.c -L. -lpos -Wl,-rpath=.:..:lib #搜索动态库的先后顺序编译目标代码时指定的动态库搜索路径LD_LIBRARY_PATH/etc/ld.so.cachedefault path /lib, and then /usr/lib.

Linux 指定运行时动态库路径【转】相关推荐

  1. Qt设置运行时动态库路径的几点说明

    随着需求的不断增加,程序不断变大,用到的动态库也越来越多,到了发布程序的时候你会发现和可执行文件同一目录下文件数量真多(比如著名的金融软件 https://www.webull.com/ 哎呀我去,目 ...

  2. g++在编译时就确定运行时动态库路径

    完整的参数是-Wl,-rpath=路径(-Wl,-rpath,路径) 注意l是小写,两个 - 不能少,逗号不能少 报错1:g++: error: unrecognized command line o ...

  3. linux下运行时链接库的路径顺序

    那么自制的库在没有指定运行时库的路径时,一般是不会找到你特定目录的,先来说说链接库的搜寻顺寻: 1.编译目标代码时指定的动态库搜索路径(指的是用-wl,rpath或-R选项而不是-L): exampl ...

  4. Linux系统程序运行时加载动态库路径顺序

    程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...

  5. alsa的动态库安装在哪里_linux 给运行程序指定动态库路径

    1. 连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/li ...

  6. 交叉编译指定运行时库路径_运行时vs编译时类路径

    交叉编译指定运行时库路径 这确实应该是一个简单的区别,但是我一直在回答有关Stackoverflow的许多类似问题,并且经常有人误解此事. 那么,什么是类路径? 应用程序所需的一组所有类(以及带有类的 ...

  7. linux动态库路径生效,Linux下如何解决动态库的链接问题

    原标题:Linux下如何解决动态库的链接问题 静态库是一种以空间换取时间和移植性的做法,一些情况下确实有着一定的意义,但是一些情况下,我们自己编写的简单项目,在绝大多数的机器上不存在移植性问题,是没有 ...

  8. android下运行时动态链接dlopen()和dlsym()的实现

    在android中,就如同在Linux下一样,我们也可以在app中,运行时动态加载一些动态链接库,执行调用其中的函数等操作.实现这一切最终依靠的就是dlopen()等几个函数.关于这几个函数的原型机这 ...

  9. 查看linux下程序或者动态库到底依赖哪些so动态库以及对应的版本

    一. ldd命令 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/ls linux-vdso.so.1 => (0x00 ...

最新文章

  1. mongo explain分析详解
  2. 方式四:修改模块导入段来拦截API
  3. Django从理论到实战(part45)--下载CSV文件
  4. One Order行项目里Item Category是怎么计算出来的
  5. 详解Oracle DELETE和TRUNCATE 的区别
  6. MySQL入门 (七) : 储存引擎与资料型态
  7. github上传的项目代码语言类型修改
  8. 计算机维护费可以跨年吗,航天信息服务费可以跨年抵扣吗
  9. vue 3 开发环境搭建
  10. Java如何发起http请求
  11. hd4600黑苹果html5死机,HD4600终于可以不花屏了,写下心得。
  12. idea复制代码空格报错
  13. 图标、协同办公等新素材上线,100%实用!
  14. 单片机I/O常用的驱动与隔离电路设计
  15. 中南大学实用测量数据处理实验
  16. 142day:LCD驱动1
  17. 基于灰度图的滚动轴承故障诊断python
  18. 京东双十一销售额突破2000亿
  19. 炫酷感科技感旋转vuejsjs特效
  20. 用OpenCV进行透视变换

热门文章

  1. 利用梯度下降法求解一元线性回归和多元线性回归
  2. Opencv一维直方图的绘制
  3. Java—— TCP协议(相关代码实现以及相关优化)
  4. 外部中断---STM32F1
  5. 41. 缺失的第一个正数 golang
  6. golang实现聊天室(四)
  7. linux操作系统进程间通信IPC之共享存储映射
  8. C++ 深浅拷贝 01
  9. 次梯度法matlab代码,实例:连续化次梯度法解 LASSO 问题
  10. 二叉树题目----4 前序遍历重构二叉树 AND 求二叉树中所有结点的个数