2014-11-02 2 views
0

실행하려고하면 GLIBCXX 버전 오류가 발생하여 같은 컴퓨터에서 컴파일, 링크 및 실행되는 프로그램이 어떻게 가능합니까? 아는 사람 있나요? 빌드 및 실행을 포함하여 (VERBOSE = 1로) 여기동일한 컴퓨터에서 컴파일 된 프로그램을 실행할 때 GLIBCXX 버전이 잘못되었습니다.

0.01s$ build/test/gamgee_test 
build/test/gamgee_test: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by build/test/gamgee_test) 
build/test/gamgee_test: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by build/test/gamgee_test) 

최대 출력 : 여기에

는 내가 점점 오전 오류입니다 https://travis-ci.org/broadinstitute/gamgee/jobs/39751787

이 이전에 발생하지 않은, 단지 I 후 cmake로 바꿨다. 또한 Clang (VM에 libC++을 설치하지 않았기 때문에 번들 된 libstdC++ 버전 사용)에서도 동일한 코드가 제대로 실행됩니다. 그 기록은 여기에 있습니다 : https://travis-ci.org/broadinstitute/gamgee/jobs/39751786

매우 의아해합니다.

답변

1

런타임 경로는 컴파일 경로와 다릅니다. 시스템에 둘 이상의 라이브러리 버전이있는 것 같습니다. LD_LIBRARY_PATH env 변수를 확인하고 ldd를 사용하여 실행 파일을 호출하여 사용 중이거나 사용하려고하는 라이브러리를 확인하십시오.

+0

런타임을 확인하고 라이브러리 경로를 명확하게 컴파일하려면 어떻게해야합니까? 나는'ld --verbose | grep SEARCH'는 컴파일과 런타임 모두에 대한 검색 경로를 말해주었습니다. – Carneiro

+0

당신 말이 맞았습니다. 두 번째 libstdC++가 gcc 4.6에서 설치되었습니다. 많은 저글링을 한 후에/usr/lib64에서 4.9.1 stdlibC++로 바꿀 수있었습니다. 이것은 travis를 속일 수있는 유일한 방법이었습니다 (이후/usr/lib64를 ld.so.conf로 광고 할 수 없기 때문입니다). – Carneiro

관련 문제