【问题标题】:How is rpath-link used in cross compilation?rpath-link 如何在交叉编译中使用?
【发布时间】:2014-01-10 17:47:14
【问题描述】:

在与我正在使用的特定工具链进行交叉编译时,我无法确认我对 rpath-link 工作原理的理解(尽管我认为这是一个普遍适用于交叉编译的普遍问题)。

当我查看在构建库和应用程序时传递给编译器和链接器的标志时,我看到以下传递给链接器:

-Wl,-rpath-link,/home/Dev/env/sys/crosscompiletoolchain/armle-v7/lib/

所以这是一条嵌入到共享库中的路径,该库正在为我的开发机器上的目标设备构建。这是有道理的,因为我会在部署到设备之前在开发机器上进行所有最终链接。当我最终部署到设备时(即共享库 + 应用程序),这些共享库不会有无用的 rpath 链接吗?

无论如何,构建的库和应用程序似乎在目标上运行良好,如果我不得不猜测,我会说它是因为应用程序具有由设备操作系统提供的环境,其中 /lib/ 作为其之一默认库搜索路径(rpath-link 仅指定要搜索的第一组目录)。这是正确的吗?

【问题讨论】:

    标签: cross-compiling


    【解决方案1】:

    选中“使用 LD,GNU 链接器 - 选项 - GNU 项目档案” (ftp.gnu.org/pub/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html):

    -rpath 和 -rpath-link 的区别在于 -rpath 选项指定的目录包含在可执行文件中并在运行时使用,而 -rpath-link 选项仅在链接时有效。

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 2015-01-25
      • 2014-07-16
      • 2019-05-04
      • 2019-12-11
      • 2015-06-17
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      相关资源
      最近更新 更多