2011-01-27 2 views
2

Qt를 컴파일하고 사용하려고합니다. 어떤 이유로 든 내 응용 프로그램에 g ++ 버전 3.4.3을 사용해야하고 시스템에 컴파일러가 설치되어 있지 않아야합니다. g ++ 4.1.2. 나는 이전 g ++에 대한 환경 변수 CXX와 CC 세트와 Qt를 컴파일하지만, 여전히 예전의 g ++ 나는 다음과 같은 오류를 얻을 내 응용 프로그램을 연결할 때 : 만 새로운 컴파일러를 사용하여기본이 아닌 컴파일러로 Qt를 컴파일하고 사용하는 중 문제가 발생했습니다.

.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `typeinfo for std::[email protected]_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `vtable for __cxxabiv1::[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `operator delete[](void*)@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `operator new(unsigned int)@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `vtable for std::[email protected]_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `std::bad_alloc::~bad_alloc()@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `typeinfo for std::[email protected]_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `vtable for __cxxabiv1::[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `std::exception::~exception()@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `std::uncaught_exception()@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `vtable for __cxxabiv1::[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `operator delete(void*)@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `operator new[](unsigned int)@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `std::terminate()@GLIBCXX_3.4' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `[email protected]_1.3' 
.../qt-4.7.1-lgpl/lib/libQtCore.so: undefined reference to `std::exception::what() [email protected]_3.4' 

및 링커에 성공 실행 파일을 링크합니다.

누구든지 해결 방법에 대한 아이디어가 있습니까?

+0

당신은 이전 GCC와 연결 하시겠습니까? LINK 변수를 설정하는 것에 대해서는 언급하지 않았고 링커가 3.4와 다른 C++ 라이브러리 버전과 연결하려고 시도하는 것처럼 오류가 발생하여 실패합니다. –

+0

예. 언급하는 것을 잊어 버렸지 만 LINK 변수를 설정했습니다. 뿐만 아니라, 나는 SYSTEM_VARIABLES리스트에이 변수를 추가하기 위해 configure 스크립트를 수정해야만했다. –

+0

LINK를 수정하는 것만으로는 충분하지 않았지만 PATH가 이전 컴파일러를 가리 키도록 변경했을 때 Qt가 컴파일되어 이전 컴파일러와 만 연결되었다가 내 프로그램과 링크 할 수있었습니다. 그 생각을해야 할 것입니다 ... –

답변

2

LINK를 수정하는 것만으로는 충분하지 않았지만 PATH가 이전 컴파일러를 가리 키도록 변경했을 때 Qt가 컴파일되었고 이전 컴파일러와 만 연결되어 프로그램과 연결될 수있었습니다 . 그것의 생각을 했어야 ...

0

gcc 3.x 및 4.x에는 호환되는 C++ ABI가 없으므로 일부 초기 4.x 버전은 최신 버전과 호환되지 않습니다 (gcc 4.2 이상을 읽으십시오).

+0

Qt의 빌드 시스템이 4.1 링커를 어떻게 구성했는지에 관계없이 어딘가에서 Qt의 빌드 시스템이 사용하지 않는 한, Qt와 gcc 3.4.3을 사용하여 응용 프로그램을 컴파일하고 있습니다. –

+0

@haggai_e 시스템 libstdC++에서 볼 수 있으며 gcc는 호환되지 않습니다. – ismail

+0

@ smsmail 그러나 그 시스템에서 gcc 3.4.3으로 컴파일 할 프로그램은 실패해야합니까? –

관련 문제