Cup*_*ppM 13 c++ linux linker gcc shared-libraries
我有一个应用程序,它被分解为几个库,用于代码重用.在Windows上,我所要做的就是将.dll文件放在与可执行文件相同的路径中,它会自动找到它们.在Linux上(因为它硬编码事物的路径)我必须指定环境变量LD_LIBRARY_PATH或在可执行文件之前预加载库.
我已经看到了一些关于使用链接器选项嵌入路径的事情,-Wl,-rpath=<PATH>并且我已经尝试使用它.作为路径.但这只是查看当前的工作目录,而不是可执行文件的目录.
有没有办法在链接器中指定默认情况下查找共享库的可执行文件目录(如在Windows上)?
谢谢!马特
bma*_*ies 18
您需要通过适当的ld或其他Darwin工具选项在您的RPATH中使用$ ORIGIN.看到这个和这个.
请记住,$必须真正以路径结束,因此您需要在链接命令行中引用或转义它.
更新:您可以看到链接器实际放入可执行文件的内容
readelf -d /path/to/exe | grep RPATH
Run Code Online (Sandbox Code Playgroud)
这是输出应该是什么样子:
0x0000000f (RPATH) Library rpath: [$ORIGIN]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6962 次 |
| 最近记录: |