-rpath和-L有什么区别?
gcc
和ld
提供了许多方法来指定库的searchpath,其中包括-rpath
和-L
标志。 手册页显示这两个标志之间没有区别,有效地说每个标志添加一个库到库searchpath。 然而,两个国旗做的事情完全一样,这似乎很奇怪。 这两种select之间有什么区别?
你必须阅读一些过时的手册(重点补充):
-rpath = DIR
将目录添加到运行时库searchpath。 这是使用
当链接一个ELF可执行文件与共享对象。 所有-rpath
参数串联并传递给运行时链接程序
使用它们在运行时定位共享对象。
与
-L searchdir
–librarypath= searchdir
将pathsearchdir添加到ld将要search的path列表中
归档库和ld控制脚本。
所以, -L
告诉ld
在链接时要在哪里寻找链接的库。 在构build树中的库时,可以使用这个(例如),它将通过make install
放入正常的系统库path中。 另一方面, --rpath
将该path存储在可执行文件中,以便运行时dynamic链接程序可以find这些库。 当您的库位于系统库searchpath之外时,可以使用它。