最近一段时间,因为加载调用各种本地库,在LINUX/MAC上专门研究了rpath问题。最初是想使用全路径方式,这样也能正确执行,有两个缺点:

  • 路径太长,不好维护。
  • 安装路径如果变化,就错了。

  改进办法是什么?就是使用相对路径,这样搜索加载时基于安装目录下的相对路径,就避免了上述问题。那么相对路径是相对于谁?开始以为,位于同一个目录下的库文件,rpath使用.(当前目录)。结果报错说找不到。后来经过实验,结论是:

  rpath搜索相对路径时,是从当前执行文件开始。

  举例来说:安装目录是APP_HOME;安装目录下有一个Office执行文件和ffmpeg目录;ffmpeg目录下有a.so/b.so,有依赖关系。rpath怎样设置,才能得到正确结果?

  • 执行文件在APP_HOME,a/b的rpath应该都是./ffmpeg。
  • 执行文件在APP_HOME/bin,a/b的rpath应该都是../ffmpeg(即先返回上一级目录,再到ffmpeg)。

LINUX/MAC的rpath,搜索依赖库时从哪里开始相关推荐

  1. linux下编译自己的静态库时依赖其他的动态库,使用时出现“undefined reference to”

    对于我这个刚入IT行业不就得新手来说,在linux下链接库的时候总是会遇到各种各样奇葩的问题,最多的就是"undefined reference to"和"cannot ...

  2. linux下安装包打包依赖库所走的弯路

    鉴于之前并没有比较熟练的制作安装包的经验,一直走在摸索的路上,如果看过我之前写过关于制作二进制安装包和rpm安装包的小盆友们,会发现之前写的blog,也是漏洞百出,不慎完美.在这条摸索的路上,公司没有 ...

  3. rpath添加依赖库搜索路径

    windows 下一个程序的dll搜索路径首先是程序目录,然后是一些系统目录.linux 下的可以通过设置 LD_LIBRARY_PATH 等方法来添加搜索路径,但是这些路径是定死的,如果要实现程序目 ...

  4. linux ubuntu dlopen,linux – 使用dlopen()加载共享库时出错

    我正在开发一个程序,在CentOS上使用dlopen加载用户创建的插件.我遇到了一个插件的问题,该插件依赖于也具有依赖关系的共享库: libplugin.so – > libservices.s ...

  5. 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决

    问题:平常把opencv库使用源码交叉编译好之后,从windows推到飞机里发现,该库的依赖关系都没有了,导致程序运行的时候报该库大小有问题 解决办法: 1.将linux下的库推到ARM平台中的一个文 ...

  6. 安装caffe依赖库时,出现“您希望继续执行吗? [Y/n] y 中止。”的解决办法

    jun@jun-HP-288-Pro-G4-MT-Business-PC:~$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmd ...

  7. Linux下制作和使用静态库和动态库

    写在前面: ldd + 可执行文件 可以查看可执行文件所依赖的库 概述: Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib ...

  8. 云小课|帮您高效快速上传组件至私有依赖库

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:软件开发平台中的发 ...

  9. configure 查找依赖库_由浅入深:Python 中如何实现自动导入缺失的库?

    在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx' 或者 ModuleNotFoundError: No mod ...

  10. minigui:静态编译连接mgncs库时遇到的xml2的问题

    最近做一个基于minigui/mgncs的项目,在开发阶段因为是在ubuntu下基于minigui的模拟器开发,所以编译时都是标准的动态库连接.没啥问题,很顺序. 现在项目功能开发告一段落,要向嵌入式 ...

最新文章

  1. 敏捷开发中Scrum方法
  2. Js 原型对象与原型链(转)
  3. 《剑指offer》第十八题(在O(1)时间删除链表结点)
  4. boost::fusion::unfused_typed用法的测试程序
  5. mysql 脚本 linux_MySQL的一些功能实用的Linux shell脚本分享
  6. struts2学习笔记(二) 初识Struts2
  7. 前端优化,包括css,jss,img,cookie
  8. python零基础怎么学英语最快_零基础如何快速成为Python高手
  9. wow模型修改器_《魔兽世界》魔兽世界模型修改器攻略
  10. dnastar拼接反向互补序列_反向互补、反向、互补序列有何区别?
  11. 教育培训机构经营技巧
  12. 计算机休眠移动硬盘不休眠,关闭硬盘盒自动休眠软件
  13. 怎样使用pickerview来实现地址菜单的三级联动效果
  14. 个人户口档案转移笔记(适用北京集体户口)
  15. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?
  16. Java学习心得及学习顺序
  17. 扫描版PDF添加目录
  18. ngnix有版本要求吗_魔兽世界:暴雪疯了?新版本老玩家遭重大削弱,这是逼人AFK?...
  19. DB2数据库备份命令
  20. Zookeeper单例搭建与伪集群搭建

热门文章

  1. java集合的相互转化(map,set,list,array)
  2. 用计算机函数,信息技术应用 用计算机画函数图象教案设计(一等奖)
  3. oracle按特定字符截取字符串_LeetCode基础算法题第159篇:找出由特定字符数组组成的字符串...
  4. 计算机下桌面图标点不开怎么办,我的电脑桌面图标程序都打不开怎么办?
  5. linux kill 杀一个进程
  6. springboot集成购买阿里的rocketmq
  7. 如何合理分配Elasticsearch的分片和副本
  8. JSP九大内置对象详解
  9. 用户需求和分析——张有亮
  10. Struts2的Action