gcc
并ld
提供了多种方法来指定库的搜索路径--rpath
和-L
标志。手册页没有显示这两个标志之间的差异,实际上是说每个标志都在库搜索路径中添加了一个库。但是,两个标志都做完全相同的事情似乎很奇怪。这两个选项之间有什么区别(如果有)?
Answers:
您必须正在阅读一些过时的手册页副本(已添加重点):
-rpath = dir
将目录添加到运行时库搜索路径。
在将ELF可执行文件与共享库链接时使用。所有-rpath
参数都被串联并传递到运行时链接程序,该链接程序
使用它们在运行时定位共享对象。
与
-L searchdir
--library-path = searchdir
将路径searchdir添加到ld将搜索
归档库和ld控制脚本的路径列表中。
因此,-L
告诉您ld
在链接时在何处寻找要链接的库。例如,当您在构建树中针对库进行构建时,将使用,将其放置在常规系统库路径中make install
。--rpath
另一方面,将路径存储在可执行文件中,以便运行时动态链接程序可以找到这些库。当您的库不在系统库搜索路径中时,可以使用它。
-rpath=/some/weird/path
,一个也需要-L /some/weird/path
。2.随gcc
需使用-Wl,-rpath=dir
。
-rpath-link
?