我正在构建一个第三方程序,该程序正在使用/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
cmake
将所有库复制到生成可执行文件的同一目录中。 ../GetHistPrices/bin
];因此第一条路径是可以的。
甚至,最后2个路径也指向共享库所在的目录-这些-rpath
选项是由cmake
脚本自动添加的。
当我尝试运行../GetHistPrices/bin/
目录[所在位置]中的程序否时-e.q.我没有用./GetHistPrices
执行它-所以我收到此错误消息:
bin / GetHistPrices:加载共享库时出错:
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
让我们同样成功地启动程序。
OS是SLES 12.3-老实说,在某种程度上,它看起来像系统中的错误。
我的问题:
即使在可执行文件中正确设置了RUNPATH
也无法正常工作,我该怎么做。
答案 0 :(得分:0)
可能迟到了,但可能对其他人有用。 一些注意事项:
-Wl,-disable-new-dtags