使用 RPATH 但不使用 RUNPATH?

2024-04-17

这一页 https://web.archive.org/web/20120418232524/http://labs.qt.nokia.com/2011/10/28/rpath-and-runpath/说关于图书馆检索的顺序ld.so:

Unless loading object has RUNPATH:
    RPATH of the loading object,
        then the RPATH of its loader (unless it has a RUNPATH), ...,
        until the end of the chain, which is either the executable
        or an object loaded by dlopen
    Unless executable has RUNPATH:
        RPATH of the executable
LD_LIBRARY_PATH
RUNPATH of the loading object
ld.so.cache
default dirs

然后建议:

当您发布二进制文件时,请使用 RPATH 而不是 RUNPATH,或者确保 LD_LIBRARY_PATH 在运行之前设置。

所以,使用RPATH with RUNPATH很糟糕,因为RUNPATH某种程度的取消RPATH那么间接动态加载不能按预期工作吗?但为什么那么RPATH已被弃用,有利于RUNPATH?

有人可以解释一下情况吗?


当您发布二进制文件时,最好为用户提供一种方法,使二进制文件适应他们自己系统的具体情况,其中包括调整库搜索路径。

用户通常可以调整LD_LIBRARY_PATH and /etc/ld.so.conf,两者的优先级都低于DT_RPATH,即您不能覆盖二进制文件中硬编码的内容,而如果您使用DT_RUNPATH相反,用户可以使用以下命令覆盖它LD_LIBRARY_PATH.

(FWIW,我认为ld.so.conf也应该优先于DT_RUNPATH,但是,无论如何,至少我们有LD_LIBRARY_PATH).

另外,我强烈不同意上面的使用建议DT_RPATH。 IMO,最好两者都不使用DT_RPATH nor DT_RUNPATH在已发送的二进制文件中。

unless

您将所有依赖库与可执行文件一起提供,并希望确保安装后JustWork(tm),在本例中使用DT_RPATH.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RPATH 但不使用 RUNPATH? 的相关文章

随机推荐

  • 钻石问题

    关于钻石问题的维基百科 钻石问题是当两个类 B 和 C 继承自 A 而类 D 继承自 B 和 C 时出现的歧义 如果 D 中的方法调用 A 中定义的方法 并且不重写该方法 并且 B 和 C 以不同的方式重写了该方法 那么它从哪个类继承 B
  • 通过 INotifyPropertyChanged 更新 ListView 的 ItemsSource

    回答的同时其他问题 https stackoverflow com q 33553691 2681948我已经进入了一件我试图理解的事情 我有一个ListView which 项目来源绑定到我的页面的属性 页面实现了INotifyPrope
  • 对于依赖于时间的大型数据集,命名表 september_2010 是否可接受且有效?

    我每天需要存储大约 73 200 条记录 由 3 个数据点组成 id 日期和整数 我团队的一些成员建议使用月份作为表名称 september 2010 创建表 而其他人则建议使用一个包含大量数据的表 关于如何处理如此大量的数据有什么建议吗
  • 如何更新 Prim 算法堆中的元素优先级?

    我正在研究Prim算法 代码中有一部分穿过切割的下一个顶点将进入属于MST 在这样做的同时 我们还必须 更新另一组中与离开顶点相邻的所有顶点 这是来自的快照CLRS 有趣的部分在于第 1 行 11 但由于我们在这里使用堆 因此我们只能访问最
  • C++14 是否定义了 unsigned int 填充位上按位运算符的行为?

    C 标准 If a C 14 http www open std org jtc1 sc22 wg21 docs papers 2013 n3797 pdf实现包括在底层字节中填充位unsigned int 标准是否指定是否不得对填充位执行
  • 在没有 Rails 的情况下调用 ERB:未定义的方法“raw”

    我正在使用ERB引擎 http www ruby doc org stdlib 1 9 2 libdoc erb rdoc ERB html生成我的 Rails 网站页面的离线 HTML 版本 当 Rails 显示时 该页面显示得很好 但我
  • 将 Rails 与 Paperclip 和 SWFUpload 结合使用

    我对用户模型进行了基本的 Rails 应用程序测试 该模型具有用回形针处理的照片字段 我创建了能够创建 编辑用户的视图 并且照片上传运行良好 h1 Editing user h1 p br p p br p
  • if..else 或 Select..case 哪个更快?

    我有三个条件可以比较 以下两者哪一个更快 请指出我 谢谢大家 If var 1 then Command for updating database ElseIf var 2 then Command for updating databa
  • 如何查找列表中句子列表中每个单词的引理和频率计数?

    我想使用 WordNet Lemmatizer 找出引理 并且还需要计算每个词频 我收到以下错误 轨迹如下 类型错误 不可散列的类型 列表 注 语料 库可在nltk包装本身 到目前为止我已经尝试过如下 import nltk re impo
  • 如何在 Komodo IDE 中设置断点?

    我已经安装了科莫多集成开发环境 https www activestate com products komodo ide 我想知道在哪里 如何设置断点 以便顶行的第 9 个符号 gt 明白了吗 EDIT 单击代码左侧装订线中的行号
  • Scala 中的函数式反应式编程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • Ant:将compilerarg传递给javac

    我有可以编译的 ant 脚本
  • 如何让 gdb 保存命令历史记录?

    我该如何设置gdb这样它就可以保存命令历史记录 当开始新的gdb会话 我想使用向上箭头键来访问之前会话的命令 简短回答 mkdir p config gdb echo set history save on gt gt config gdb
  • 如何使用 UIPath 中的“关闭选项卡”活动关闭子选项卡

    UiPath 是closing the 主窗口而不是子窗口 我在中定义了一个浏览器变量attach browser活动并将该浏览器变量传递给Close tab活动 Chrome 主窗口仍处于关闭状态 另附上项目 xaml 文件https d
  • iOS11 AppIcon无法更改

    Xcode 9 测试版 6 iOS 11 测试版 10 我想要使 用自定义应用程序图标打包应用程序 因此我尝试替换 DerivedData Users XXX Library Developer Xcode DerivedData proj
  • Pyparsing 分隔列表仅返回第一个元素

    这是我的代码 l 1 3E 2 2 5E 1 parser Word alphanums grammar delimitedList parser delim t print grammar parseString l 它返回 1 3E 2
  • iOS:从 url 加载图像

    我需要从 url 加载图像并将其设置在 UIImageView 中 问题是我不知道图像的确切大小 那么如何才能正确显示图像呢 只需使用 UIImage 的 size 属性即可 例如 NSURL url NSURL URLWithString
  • 将带有ajax请求的数组发送到php

    我像这样创建了数组 9 ques 5 19 ques 4 现在我想将它从 JS 发送到 PHP 但我没有得到正确的结果 我的JS代码是 button click function e e preventDefault ajax type p
  • nameof 和 typeof 的区别

    如果我错了请纠正我 但是做类似的事情 var typeOfName typeof Foo Name and var nameOfName nameof Foo 应该给你完全相同的输出 根据该消息来源 可以理解的原因之一是 https msd
  • 使用 RPATH 但不使用 RUNPATH?

    这一页 https web archive org web 20120418232524 http labs qt nokia com 2011 10 28 rpath and runpath 说关于图书馆检索的顺序ld so Unless