2011-01-27 213 views
2

我试图编译和使用Qt。出于某种原因,我必须为我的应用程序使用g ++版本3.4.3,而不是系统上安装的编译器:g ++ 4.1.2。 我编译的Qt与环境变量CXX和CC集老G ++,但仍当我联系我的应用程序与旧的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++库版本,这就是它失败的原因。 – 2011-01-27 15:07:19

+0

是的。我忘了提及它,但我确实设置了LINK变量。不仅如此,我必须通过将配置脚本添加到SYSTEM_VARIABLES列表来修改配置脚本以遵守这个变量。 – 2011-01-30 10:07:27

回答

2

事实证明,修改LINK是不够的,但是当我将PATH更改为指向旧编译器时,Qt被编译并仅与旧编译器链接,然后我就能够将其与我的程序。应该有这个想法...

0

gcc 3.x和4.x没有兼容的C++ ABI,甚至有些早期的4.x版本与最近的版本不兼容(阅读gcc 4.2+)。