在Linux上运行时覆盖libstdc++搜索路径

4
我正在尝试为我的游戏Open Hexagon创建一个独立于发行版的.tar.gz档案,该游戏是使用最新版本的GCC(4.8.1)编译并使用最新版本的libstdc++。由于它已经使用了许多共享库,我决定将游戏与它所需的.so文件一起部署,包括正确版本的libstdc++。
我使用LD_LIBRARY_PATH更改默认库搜索路径。不幸的是,Linux(与Windows不同)始终优先考虑/usr/lib/,即使设置了LD_LIBRARY_PATH。
有没有办法在运行时覆盖libstdc++的搜索路径?到目前为止,我看到的唯一解决方案涉及在编译时搞乱rpath或runpath,这是我想避免的。另一个解决方案是静态链接,但我听说在Linux中这是一种不好的做法,而且我还使用自动更新程序来自动更新最新的.so库。

请问您能否指出Linux中man页面上说/usr/lib/优先于LD_LIBRARY_PATH的内容? - Talespin_Kit
2个回答

0

通过在编译时删除RPATH,部分问题已得到解决。但是在旧版发行版上,不同版本的glibc仍存在问题。


0

对我来说,使用“export LD_LIBRARY_PATH=[我的新路径]:$LD_LIBRARY_PATH”是有效的。它不会将/usr/lib放在更高的优先级。


1
我的测试显示即使在LD_LIBRARY_PATH中设置了自定义路径, libstdc ++也可以在/usr/lib/中找到。也许是我的操作有误?您是否真的成功在默认文件夹中存在库的情况下,使用LD_LIBRARY_PATH找到了另一个版本的libstdc ++ - Vittorio Romeo
@Vittorio Romeo,你能发布一下你的LD_LIBRARY_PATH内容吗? - Amadeus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接