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

简介: LINUX/MAC的rpath,搜索依赖库时从哪里开始

最近一段时间,因为加载调用各种本地库,在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 vr&ar
Linux的动态库和静态库
Linux的动态库和静态库
|
存储 编译器 Linux
动态链接的魔法:Linux下动态链接库机制探讨
本文将深入探讨Linux系统中的动态链接库机制,这其中包括但不限于全局符号介入、延迟绑定以及地址无关代码等内容。
2557 141
|
Linux 编译器 vr&ar
Linux的动态库与静态库
静态库在编译时直接嵌入到最终的可执行文件中。
332 0
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
11353 2
|
iOS开发 索引 MacOS
mac文件搜索工具
【10月更文挑战第11天】
2415 2
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
1134 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
安全 Linux
Linux中ldd命令的依赖复制技巧
`ldd`命令的依赖复制技巧在特定的场合下非常有用,但它也需要细心的处理和充分的测试,以确保在新环境中的稳定运行。此外,这种做法虽然方便,但在长期维护和安全更新方面可能会带来额外的负担。
598 1
|
Linux 程序员 Python
python-office支持Mac和Linux吗?自动化办公用这个就够了
大家好,我是程序员晚枫。今天解答关于`python-office`是否支持Mac和Linux的问题。起初因需调用Office功能,该项目不完全支持这两个系统。现已通过拆分子项目解决了这一限制,例如`poexcel`可在多平台上运行Excel相关功能。只需简单修改导入语句,如使用`import poexcel`替代`import office`,即可在Mac和Linux上顺利执行。学习或使用中有任何疑问,欢迎留言交流!
473 5
|
Linux API
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
|
缓存 安全 Linux
本地YUM源大揭秘:搭建您自己的Linux软件宝库,从此告别网络依赖!一文掌握服务器自给自足的终极技能!
【8月更文挑战第13天】在Linux中,YUM是一款强大的软件包管理工具,可自动处理依赖关系。为适应离线或特定安全需求,本指南教你搭建本地YUM源。首先创建存放软件包的`localrepo`目录,复制`.rpm`文件至其中。接着,安装并运用`createrepo`生成仓库元数据。随后配置新的`.repo`文件指向该目录,并禁用GPG检查。最后,清理并重建YUM缓存,即可启用本地YUM源进行软件搜索与安装,适用于网络受限环境。
1973 3