Centos 6의 GLIBCXX 3.4.15

Centos 6의 GLIBCXX 3.4.15

Centos 6 빌드에 GLIBCXX 3.4.15를 설치해야 합니다(Steam에서 게임 서버를 실행하려면). 조금 구글링을 해보니 프로그램 설치시 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를 직접 설치하는 방법은 무엇입니까?

답변1

나는 이것을 해킹이라고 생각하지만 당신이 겪고 있는 것과 같은 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를 다른 디렉터리에 설치한 다음 덮어쓰거나 Steam을 실행하여 수정된 라이브러리를 확인해야 할 수도 LD_LIBRARY_PATH있습니다 LD_PRELOAD.

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

이를 수행하는 방법에 대한 자세한 내용은 이 SO Q&A를 참조하세요.단일 호스트의 여러 glibc 라이브러리.

답변2

기본적으로 CentOS(4.4.7)와 함께 제공되는 libstdc++ RPM 패키지 버전은 애플리케이션에 충분히 새로운 버전이 아닙니다. CentOS는 최신 및 최고 수준이 아닌 장기적인 안정성을 제공하므로 이는 전혀 예상치 못한 일이 아닙니다.

Fedora는 일반적으로 훨씬 앞서 있으며 문제 없이 서버를 실행할 수 있습니다.

또는 최신 소스에서 최신 버전의 libstdc++를 빌드할 수 있습니다. 나는 gcc SRPM(gcc.gnu.org의 최신 버전)에 있는 CentOS SPEC 파일로 시작하고 이 파일을 다시 작성하여 나만의 RPM을 구축할 것입니다.

과거에는 C 라이브러리로의 업그레이드가 예상치 못한 방식으로 시스템을 중단시키는 좋은 방법이었습니다...

답변3

Nodejs v6.9.2의 grpc 모듈(google-cloud에서 가져온)에도 동일한 문제가 있습니다. 이 솔루션은 저에게 효과적이었습니다.https://forum.qt.io/topic/25032/solved-centos-6-3-glibcxx_3-4-15-not-found-error-in-qt5-install/8)

tar xzf gcc-4.6.2.tar.gz
cd gcc-4.6.2
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.6.2/configure --prefix=/opt/gcc-4.6.2
make
make install

관련 정보