我正在构建一个第三方程序,该程序使用未设置的目录中的库/etc/ld.so.conf
- 因此我将程序与-rpath
选项链接。
运行objdump -x bin/GetHistPrices | grep -i path
检查是否-rpath
设置正确我得到确认它是好的:
RUNPATH
/application/FXCM-API/GetHistPrices/bin:
/application/FXCM-API/lib:
/application/FXCM-API/sample_tools/lib
Run Code Online (Sandbox Code Playgroud)
cmake
将所有库复制到生成可执行文件的同一目录中 [eq ../GetHistPrices/bin
]; 因此第一条路径是可以的。
更重要的是,最后 2 个路径也指向共享库所在的目录 - 这些-rpath
选项由cmake
脚本自动添加。
当我尝试运行该程序不是内部../GetHistPrices/bin/
目录[所在] - EQ我不执行它./GetHistPrices
-所以我得到这个错误信息:
bin/GetHistPrices:加载共享库时出错:
Run Code Online (Sandbox Code Playgroud)libgsexpat.so: cannot open shared object file: No such file or directory
该程序仅在我从bin/
或/application/FXCM-API/lib
目录运行它时启动,因为所需的库位于那里。
1)
当我运行程序时,
LD_LIBRARY_PATH="/application/FXCM-API/GetHistPrices/bin" bin/GetHistPrices
它就会启动。但这也是我在可执行文件中看到的。奇怪的!
2)
添加/application/FXCM-API/GetHistPrices/bin
到/etc/ld.so.conf
让启动程序以及成功。
操作系统是 SLES 12.3 - 老实说,不知何故,它在我看来就像系统中的一个错误。
我的问题:
我做错了什么,即使RUNPATH
在可执行文件中正确设置它也不起作用。
小智 6
回答可能会晚,但可能对其他人有用。一些注意事项:
-Wl,--禁用新dtags
归档时间: |
|
查看次数: |
833 次 |
最近记录: |