Ubuntu 컴퓨터에서 C++ 응용 프로그램을 만들었습니다. Centos 머신에 바이너리를 복사했습니다. 에러 발생됨:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
필요하다고 생각되는 패키지를 설치했습니다.
yum install gcc gcc-c++ make openssl-devel
여전히 같은 오류가 발생합니다.
그런 다음 전체 개발 도구를 설치했습니다.
yum groupinstall 'Development Tools'
여전히 같은 오류가 발생합니다. 이 문제를 해결하는 방법?
UPD
나는 glibc
다음 명령을 사용하여 내 컴퓨터에 어떤 버전이 있는지 확인하기 로 결정했습니다 ldd --version
.
Ubuntu: 2.23
Centos6.9: 2.12
Ubuntu 버전 2.23 CentOS
에 대해 불평하는 이유는 무엇입니까 ?GLIBCXX_3.4.21
glibc
답변1
이것은 CentOS7에서 나에게 효과적이었습니다.
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths
답변2
존재하지 않습니다(EPEL 저장소도 활성화된 Centos 7 시스템에서).
$ sudo yum whatprovides '*libstdc++*' | egrep -o '3\.4\.[0-9]+' | sort -u
...
따라서 이를 제공하는 저장소를 찾거나 적절한 버전의 라이브러리를 직접 컴파일하고 적절한 버전의 라이브러리를 사용하도록 바이너리를 패치해야 합니다. 또는 3.4.19
이것이 위 명령이 나에게 제공한 가장 높은 숫자라고 생각하십시오(Centos 7의 경우, Centos 6 이하에서는 의심할 여지 없이 더 낮은 숫자를 사용할 수 있습니다).