【问题标题】:Unable to remove rpath from executable无法从可执行文件中删除 rpath
【发布时间】:2014-02-06 00:02:00
【问题描述】:

我正在为 ARM 平台进行交叉编译。在我链接的许多库文件中,只有极少数有 rpath。

我不知道它来自哪里,因为我将我需要的所有库都复制到了一个文件夹中,然后使用 Netbeans 将它们添加到项目中(在 Ubuntu 下使用 Linaro 编译器)。即使我从命令行编译,输出也是一样的。

我尝试了 patchelf,但它没有删除 rpath。该程序本身可以工作(例如,如果我在搜索库时创建了它正在寻找的路径)。

知道怎么解决吗?

【问题讨论】:

  • 您能否提供一些您执行构建和分析二进制文件的步骤示例?
  • 我正在使用 Netbeans。我用绝对路径链接我需要的所有库,这就是我所做的。
  • 是的,但你也说这个问题似乎与 Netbeans 无关。我不得不用谷歌搜索 Netbeans(称我为 luddite)。问题中的任何内容都无法让我重现,甚至开始理论化您所看到的内容。
  • 尝试创建一个更简单的示例并将其发布。我猜 rpath 来自您链接的库之一或来自编译器。
  • 您的问题并不完全清楚。该主题似乎表明是您的可执行文件本身获得了不需要的 RPATH,而问题表明是库文件本身有问题。它是哪一个?此外,这些“许多库文件”是您自己编译的,还是您从其他地方获得的?您是在谈论静态库还是动态库(甚至可能只是普通的目标文件)?

标签: ubuntu arm busybox rpath


【解决方案1】:

您是否尝试过使用 chrpath? ,它可能在您的分发包中可用

【讨论】:

    【解决方案2】:

    如果你使用 cmake,

    There is a builtin CMake option CMAKE_SKIP_RPATH, if it is enabled all other RPATH related options are ignored, no RPATH is built into anything.

    http://www.cmake.org/Wiki/CMake_RPATH_handling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      相关资源
      最近更新 更多