Centos 6上的GLIBCXX 3.4.15


8

我需要在Centos 6版本上安装GLIBCXX 3.4.15(以便在Steam上运行用于游戏的服务器)。我在Google周围搜索,并在几个网站上安装了一些程序,这些程序在出现错误的地方显示需要3.4.15(LoadLibrary ERROR: /usr/lib/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found),但他们只是使用一种绕过/不安装的方法。当我这样做时strings /usr/lib/libstdc++.so.6 | grep GLIBCXX,这是输出:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

那么,如何在Centos 6上直接安装GLIBCXX 3.4.15?

Answers:


7

我认为这是一种黑客,但是在我不愿意承认的情况下使用它的次数超过了我想解决的GLIBC兼容性问题,例如您遇到的问题。

黑客涉及建立一个链接,/usr/lib其中包含特定工具想要的库的名称。链接然后指向库的备用名称。

假设我想创建一个指向的链接libstdc++.so.6

$ ls -l /usr/lib | grep libstdc++.so
lrwxrwxrwx.  1 root root       19 Dec 18  2010 libstdc++.so.6 -> libstdc++.so.6.0.14
-rwxr-xr-x   1 root root   950428 Sep 24  2010 libstdc++.so.6.0.14

结果是这样的:

$ ln -s libstdc++.so.6 libstdc++.so.6.0.15

检查结果:

$ ls -l /usr/lib | grep libstdc++.so
lrwxrwxrwx.  1 root root       19 Dec 18  2010 libstdc++.so.6 -> libstdc++.so.6.0.14
lrwxrwxrwx.  1 root root       19 Dec 18  2010 libstdc++.so.6.0.15 -> libstdc++.so.6.0.14
-rwxr-xr-x   1 root root   950428 Sep 24  2010 libstdc++.so.6.0.14

但是我不确定此方法是否可以使用,因为您的库仍会缺少版本字符串GLIBCXX_3.4.15

如果破解不成功,则您可能不得不硬着头皮,将GLIBC安装在备用目录中,然后覆盖LD_LIBRARY_PATH或,LD_PRELOAD以便执行Steam即可看到修改后的库。

$ LD_PRELOAD='mylibc.so anotherlib.so' program

在SO问答中,有关如何执行此操作的详细信息在此进行了更多介绍:单个主机上有多个glibc库


@PMint-哪种方法适合您?
slm

第二ls,第三行不应该libstdc++.so.6.0.15 -> libstdc++.so.6.0.14吗?
Runium

@Sukminder-是的,谢谢。固定。
slm

2

基本上,CentOS(4.4.7)附带的libstdc ++ RPM软件包的版本对于您的应用程序来说不够新。CentOS提供长期的稳定性,而不是最新和最好的版本,因此这并不是完全意外的。

Fedora通常领先很多,并且可以在没有任何问题的情况下运行服务器。

或者,您可以从较新的来源构建libstdc ++的较新版本。我将从gcc.gnu.org的最新版本gcc SRPM中的CentOS SPEC文件开始,并对它们进行重做以构建我自己的RPM。

过去,升级C库是一种以意想不到的方式破坏系统的好方法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.