C++에서 exec를 빌드했지만 배포 컴퓨터에 배포 할 때 다음과 같은 오류가 발생합니다. 'Dev 프로덕션 libc/libstdC++ 불일치 [libc.so.6/libstdC++. so.6 이전 버전의 경우]
/lib64/libc.so.6: version GLIBC_2.14 not found /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.14 not found /usr/lib64/libstdc++.so.6: version CXXABI_1.3.5 not found
배포 기계가 이전의 libc (2.12)/된 libstdC++ (3.4.13)와 RHEL 기반 시스템이기 때문 밝혀 내 컴퓨터는 지금까지 최근의 커널과 라이브러리와 우분투된다. 불행히도 배포 시스템을 업그레이드 할 수 없습니다.
정적 링크 (libc 실패)와 클러스터에 내 라이브러리 버전 복사 (LD_PRELOAD 및 -Wl, -rpath 옵션 실행)와 같은 일반적인 방법을 시도했지만 그렇지 않습니다. 내 컴퓨터에 이전 버전의 gcc도 설치했지만 작동하지 않습니다.
이 작업을 수행 할 수있는 방법이 있습니까 (로컬 컴퓨터에서 개체 코드를 만들고 다른 컴퓨터에서 연결하는 방법 일 수 있습니다). 또는 소스를 복사하지 않고 배포 컴퓨터에서 코드를 컴파일하는 방법이 있습니다. 배포 컴퓨터에서 시스템 라이브러리 복사본을 가져 와서 gcc와 연결되도록 할 수 있습니까?
이 Compile with older libc (version `GLIBC_2.14' not found) 및 Deploying Yesod to Heroku, can't build statically 및 Build and run C++ code on different version of Linux and glibc
내가 VM을 통해이 작업을 수행하는 하나의 방법을 알고 관련 (모든 그 문제, 어떻게 올바르게 그렇게하기),하지만 난 가능하면 그것을 피하려고. (HT Mat)
해결 방법 : 프로덕션 대상과 동일한 OS 버전으로 개발 상자에 VM을 만듭니다. ** 컴파일 및 테스트 **에 사용하십시오. – Mat
예 VM을 만드는 것이 가능합니다. 가능한 경우이를 피하려고했습니다. VM이 우분투에서 rhel을 배포하는 데 적합 할 수있는 관련 참고 사항. – ssj3892414
정적 링크는'glibc-static'과 다른 정적 라이브러리 아카이브가 필요합니다. 정적 라이브러리 아카이브가없는 경우 정적 링크를 연결할 수 없습니다. – alvits