gcc
和ld
提供了许多方法来指定库的搜索路径 - 其中包括-rpath
和-L
标记。这些联机帮助页显示这两个标志之间没有差异,有效地说每个标志都会向库搜索路径添加一个库。然而,两个标志完全同样的事情似乎很奇怪。这两个选项之间有什么区别?
答案 0 :(得分:83)
您必须阅读一些过时的联机副本(重点已添加):
-rpath = DIR
将目录添加到运行时库搜索路径。这是用的 将ELF可执行文件与共享对象链接时。所有-rpath
参数被连接并传递给运行时链接器,其中包含 使用它们在运行时找到共享对象。
VS。
-L searchdir
--library路径= searchdir
将路径searchdir添加到 ld 将搜索的路径列表中 归档库和ld控制脚本。
因此,-L
告诉ld
在链接时查找要链接的库的位置。当你在构建树中构建库时,可以使用它(例如),它将被make install
放入正常的系统库路径中。另一方面,--rpath
将该路径存储在可执行文件中,以便运行时动态链接器可以找到库。当库在系统库搜索路径之外时,您可以使用它。