我坐在一个我无法真正控制的环境中(不仅仅是我,所以基本上,我无法改变环境,否则它对其他人不起作用),我唯一能影响的就是如何二进制文件已构建。
我的问题是,环境指定了一个 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,或者我的问题还有其他可能的解决方案吗?请注意,我说的是运行时的动态链接,我能够在编译和链接时控制命令行。
谢谢。