【发布时间】:2010-03-09 10:13:22
【问题描述】:
我坐在一个我无法真正控制的环境中(不只是我,所以基本上,我无法改变环境,否则它对其他人不起作用),我唯一能影响的就是是如何构建二进制文件的。
我的问题是,环境指定了一个 LD_LIBRARY_PATH,其中包含一个与正在使用的编译器不兼容的 libstdc++。我尝试静态编译它,但这对于 g++ 似乎是不可能的(版本 4.2.3,似乎在以后的版本中已经在这个方向上完成了工作,尽管这些版本不可用,-static-libstdc++ 或类似的东西)。
现在我已经开始使用 rpath 将绝对路径名烘焙到可执行文件中(可行,它应该运行的所有机器都是相同的)。不幸的是,LD_LIBRARY_PATH 似乎优先于 rpath(重置 LD_LIBRARY_PATH 确认它能够找到库,但如上所述,将为所有人设置 LD_LIBRARY_PATH,我无法更改)。
有什么方法可以让 rpath 优先于 LD_LIBRARY_PATH,或者我的问题还有其他可能的解决方案吗?请注意,我说的是运行时动态链接,我可以在编译和链接时控制命令行。
谢谢。
【问题讨论】:
标签: g++ dynamic-linking