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

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

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

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

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

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

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

The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable and used at runtime, whereas the -rpath-link option is only effective at link time.

转载注明原文:交叉编译 – 如何在交叉编译中使用rpath-link? - 代码日志