2016-08-12 5 views
0

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 staticallyBuild and run C++ code on different version of Linux and glibc

내가 VM을 통해이 작업을 수행하는 하나의 방법을 알고 관련 (모든 그 문제, 어떻게 올바르게 그렇게하기),하지만 난 가능하면 그것을 피하려고. (HT Mat)

+0

해결 방법 : 프로덕션 대상과 동일한 OS 버전으로 개발 상자에 VM을 만듭니다. ** 컴파일 및 테스트 **에 사용하십시오. – Mat

+0

예 VM을 만드는 것이 가능합니다. 가능한 경우이를 피하려고했습니다. VM이 우분투에서 rhel을 배포하는 데 적합 할 수있는 관련 참고 사항. – ssj3892414

+0

정적 링크는'glibc-static'과 다른 정적 라이브러리 아카이브가 필요합니다. 정적 라이브러리 아카이브가없는 경우 정적 링크를 연결할 수 없습니다. – alvits

답변

0

-static-libstdc++ 옵션으로 애플리케이션을 컴파일하십시오.

+0

나는 이것을 시도했는데 문제가 그것이 올바르게 작동하지 않는다고 말한다. – ssj3892414

+0

그게'libstdC++'에서는 도움이되지만 GLIBC에서는 도움이되지 않습니다. –

+0

모든 libstdC++ 문제를 해결하지만 glibc 만 남겨 두었습니다. – ssj3892414