如何在交叉编译中使用rpath-link?

时间:2013-06-21 23:30:45

标签: cross-compiling

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

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

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

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

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

1 个答案:

答案 0 :(得分:13)

选中“使用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选项仅在链接时有效。