2012-09-27 3 views
0

나는 우분투 12.04 컴퓨터에서 C++ 프로그램을 컴파일하고 빨간 모자 리눅스 서버에서 실행하려고 시도하고있다. 내가 서버에서 실행하면이 오류를 얻을 : linux error with libc.so.6

/lib64/libc.so.6: version `GLIBC_2.14' not found

은 내가 libc.so.6으로 파일을 발견하고이 같은 디렉토리에 libc-2_12.so에 링크 된 발견했다. libc-2_12.so 파일을 libc-2_14.so와 같은 것으로 대체해야한다고 가정합니다. 그러나 검색을 통해 나는 그것을 할 수있는 방법이 없거나 가능할지라도 발견했습니다. 이 문제를 해결할 방법이 있습니까?

+0

확인 : Redhat Linux 서버가 32 비트입니까? 자사의 64 비트, LDLIBRARY에 대한 경로가 우분투와 다른가요? – t0mm13b

+0

두 시스템 모두 64 비트입니다 – user1601045

+0

은 컴파일러 버전과 하드웨어 아키텍처가 두 시스템에서 동일합니까? – Walter

답변

0

IMO, 가장 좋은 방법은 프로그램을 RedHat 용으로 다시 컴파일하는 것입니다. RH에서 해당 파일을 바꾸는 유일한 방법은 전체 libc를 다시 컴파일하는 것이지만 RH로 설치된 다른 모든 소프트웨어는 삭제합니다. RH의 패키징 시스템은 다른 버전의 libc 사이를 전환하는 것을 허용하지 않습니다.

+0

좋아, 나는 그것을 두려워했다, 나는 그것을 서버에 구축하려고 시도 할 것이다. 설명 해줘서 고마워. – user1601045

0

빨간 모자 클러스터에 올바른 라이브러리가 있으면 (그렇지 않으면 유효한 라이브러리를 얻는다면) 해당 경로를 LD_LIBRARY_PATH 환경의 앞에 추가하십시오 (LD_RUN_PATH도 가능).

0

다른 답변에서 말한 것처럼 가장 좋은 방법은 서버에서 프로그램을 다시 컴파일하는 것입니다. 또 다른 방법은 링크 할 때 -static을 GCC에 전달하여 프로그램을 정적으로 링크하는 것입니다 (또는 프로그램을 컴파일 할 때 단일 명령으로 컴파일하는 경우).

이렇게하면 런타임에 동적 링커를 사용하는 대신 모든 종속성을 끌어와 하나의 아주 큰 프로그램이지만 하나의 프로그램을 만들어야합니다. 잘못 될 수있는 모든 종류의 행동이 있습니다. 따라서 이상한 행동으로 끝날 수도 있고 전혀 도움이되지 않을 수도 있습니다. 주의와 함께 사용.

물론 두 시스템이 동일한 아키텍처 인 경우에만 작동합니다.