![이전 CentOS 시스템에 C++11을 지원하는 C++ 프로그램 배포](https://linux55.com/image/139157/%EC%9D%B4%EC%A0%84%20CentOS%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%20C%2B%2B11%EC%9D%84%20%EC%A7%80%EC%9B%90%ED%95%98%EB%8A%94%20C%2B%2B%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EB%B0%B0%ED%8F%AC.png)
내 프로그램은 /lib64/libstdc++.so.6.0.19에 의존하는 libstdc++.so.6에 의존합니다.
하지만 내 이전 CentOS에는 libstdc++.so.6 => libstdc++.so.6.0.13이 있습니다.
질문
- 버전이 0.19보다 낮은 경우 libstdc++.so.6을 확인해야 합니까?
- libstdc++를 libstdc++.so.6.0.19로 업데이트하는 방법은 무엇입니까?
답변1
libstc++.so.6.0.13
그리고 libstdc++.so.0.19
호환됩니다. 보다libstdc++ 매뉴얼. CentOS 시스템에서 프로그램을 실행하는 데 문제가 없어야 합니다.
일반적으로 Linux의 공유 라이브러리는 다음과 같은 버전 제어 규칙을 따라야 합니다. libfoo.so.X.Y.Z
여기서 X
는 메이저 번호이고 는 마이너 번호 Y
입니다 . 증가 Z
하면 X
새 버전이 이전 버전과 호환되지 않습니다. 증분은 Y
ABI에 호환 가능한 변경이 이루어졌음을 의미합니다. 변경 사항은 Z
일부 버그가 수정되었음을 의미하지만 인터페이스는 변경되지 않았습니다. 실행 가능한 바이너리에는 사용하는 공유 라이브러리에 대한 참조가 포함되어 있지만 이러한 참조에는 주요 번호만 포함됩니다. 사용되는 실제 라이브러리는 프로그램을 실행하는 컴퓨터의 라이브러리 심볼릭 링크에 의해 결정됩니다. 예를 들면 다음과 같습니다.
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25