当我使用特定的工具链进行交叉编译时,我很难确认我对rpath-link是如何工作的理解(尽管我认为这是一个普遍的问题,一般适用于交叉编译)。
在构建库和应用程序时,当我查看哪些标志被传递给编译器和链接器时,我看到以下内容被传递给链接器:
-Wl,-rpath-link,/home/Dev/env/sys/crosscompiletoolchain/armle-v7/lib/因此,这是一个嵌入到共享库中的路径,正在为我的开发机器上的目标设备构建。这是有意义的,因为在部署到设备之前,我将在开发机器上进行所有的最终链接。当我最终部署到设备上时(即,共享库+应用程序),那么这些共享库不会有一个无用的rpath-link吗?
无论如何,构建的库和应用程序似乎在目标上都工作得很好,如果我必须猜测,我会说这是因为应用程序有一个由设备操作系统提供的环境,该环境将/lib/作为其默认库搜索路径之一(rpath-link仅指定要搜索的第一组目录)。这是正确的吗?
发布于 2014-01-10 17:47:15
查看"Using LD,the GNU linker - Options - GNU Project Archives“(ftp.gnu.org/pub/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html):
-rpath和-rpath-link之间的区别在于,由-rpath选项指定的目录包含在可执行文件中并在运行时使用,而-rpath-link选项仅在链接时有效。
https://stackoverflow.com/questions/17245728
复制相似问题