【发布时间】:2016-05-27 15:19:00
【问题描述】:
我在我的 ELF 文件上运行了 arm-linux-gnueabihf-ldd(一个来自 Cygwin——别问——一个来自 Ubuntu),尽管通过包含 -rpath- 消除了 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”时,它抱怨它在构建机器上找不到对主机无用的路径!
【问题讨论】:
-
您的意思是
ld还是ldd? -
ldd 是用于查找需要动态库的未解析外部的实用程序。
-
我知道这一点,但您在标题中写了一个,而在问题的正文中使用了另一个。
标签: c++ linux ubuntu arm cross-compiling