3

我正在尝试为我的游戏 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库。

4

2 回答 2

0

使用 "export LD_LIBRARY_PATH=[my new path]:$LD_LIBRARY_PATH" 对我有用。它不会将 /usr/lib 置于更高的优先级。

于 2013-06-18T19:39:27.603 回答
0

RPATH通过在编译时删除部分解决。glibc尽管如此,旧发行版的不同版本仍然存在问题。

于 2013-07-04T22:50:51.383 回答