gpt4 book ai didi

c++ - 在哪里可以找到 arm-linux-gnueabihf-ld 的联机帮助页,更不用说编写良好的联机帮助页了,其中包括 -rpath 和 -rpath-link?

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:22 24 4
gpt4 key购买 nike

我在我的 ELF 文件上运行了arm-linux-gnueabihf-ldd(一个来自 Cygwin,别问,一个来自 Ubuntu),尽管通过包含 -rpath-link 消除了 Ubuntu 上的警告,我认为它使动态依赖项成为静态,但考虑到我读到的难以捉摸的联机帮助页的含糊性,dll 仍然将 ld-linux.so.3 显示为 5 个未解析的文件之一,但链接器从未提示过关于其他四个!在本例中,路径是通过 apt-get 安装的本地拷贝。

这种浪费时间导致主机提示“未找到”(这意味着,正如我后来发现的那样,找到了 ELF 文件,但未找到未命名的库)。主机中的大部分文件位于/lib 中,其余部分位于/usr/lib 中,这一事实让我认为 -rpath 和/或 -rpath-link 应该告诉它在主机上的何处查找其解析,就好像主机不够聪明,无法知道它在哪里保存库一样。

我并不是在寻找比简单的arm-linux-gnueabihf-ld选项(或者通过扩展,arm-linux-gnueabihf-g++选项)“更高级别”(即更不透明)的东西,这些选项在使用上足够清晰,并且不会导致如下消息:

arm-linux-gnueabihf-g++: error: unrecognized command line option ‘-rpath’
arm-linux-gnueabihf-g++: error: unrecognized command line option ‘-rpath’

当我非常清楚它在不同的上下文中识别出“-rpath”时,它提示它无法在构建计算机上找到对主机无用的路径!

最佳答案

你试过吗man ld

完整的文档位于 binutils manual ,您可以使用 info ld 读取。

-rpath-link, which I assumed was making a dynamic dependency static

不,它告诉链接器在哪里找到间接共享库依赖项,因此它可以检查它们以确保不存在未解析的引用。

. The fact that the host machine has most of these in /lib and the rest in /usr/lib made me think that -rpath and/or -rpath-link were supposed to tell it where to look on the host machine for their resolution

没有。

-rpath 添加可执行文件的路径,以便在运行时动态加载器将在运行时在该路径中查找共享库依赖项。这是指定共享库路径的一种方法,包括 ldconfigLD_LIBRARY_PATH 等(有关详细信息,请参阅 ld.so(8))。

-rpath-link 告诉链接器在链接时在何处查找共享库依赖项,但不影响在运行时如何查找依赖项。

您无法将 -rpath 传递给 g++,因为它是链接器的一个选项,而 g++ 无法理解它。使用 -Wl,-rpath 告诉 g++ 将其传递给链接器。

关于c++ - 在哪里可以找到 arm-linux-gnueabihf-ld 的联机帮助页,更不用说编写良好的联机帮助页了,其中包括 -rpath 和 -rpath-link?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37487070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com