我想从控制台编译我的Qt应用程序。这里是规格: MCBC 3.0(已预装Qt和gcc),Qt 4.6.4,gcc v4.1.2,qmake v2.01a。GCC无法识别Qt库或/和包含文件
我的测试qt应用程序只包含2个文件:basket.pro和main.cpp。
basket.pro:
TARGET = basket
TEMPLATE = app
SOURCES += main.cpp
HEADERS +=
main.cpp中:
#include <QtGui/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
return a.exec();
}
我需要编译从控制台应用程序。
我有2个虚拟机。 VM#1安装了QtCreator,并且QtCreator编译这个应用程序没有麻烦,也可以通过“qmake”和“make”从控制台编译应用程序。但是有VM#2,它没有安装QtCreator,并且它是问题的来源。 我尝试通过命令“qmake make”编译应用程序,尝试使用由QtCreator创建的Makefile,试图仅使用带有明确定义的路径的gcc命令来包含Qt库,包含文件和链接库,但始终得到相同的错误。比如,我用2个GCC命令对应,这对于成功编译使用QtCreator这个程序:
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt46/mkspecs/linux-g++ -I. -I/usr/lib/qt46/include/QtCore -I/usr/lib/qt46/include/QtGui -I/usr/lib/qt46/include -I. -o main.o main.cpp
g++ -o basket main.o -L/usr/lib/qt46/lib -lQtGui -L/usr/lib/qt46/lib -lQtCore -lpthread
所以在执行第二个命令后,我得到了同样的错误一如既往:
[[email protected] basket]# ./build_g++_step2
main.o: In function `basic_string<char, string_char_traits<char>, __default_alloc_template<true, 0> >::data(void) const':
/usr/lib/gcc-lib/i586-linux/2.95.4/../../../../include/g++-3/std/bastring.h:152: undefined reference to `QApplication::QApplication(int &, char **, int)'
/usr/lib/gcc-lib/i586-linux/2.95.4/../../../../include/g++-3/std/bastring.h:152: undefined reference to `QApplication::exec(void)'
/usr/lib/gcc-lib/i586-linux/2.95.4/../../../../include/g++-3/std/bastring.h:152: undefined reference to `QApplication::~QApplication(void)'
/usr/lib/gcc-lib/i586-linux/2.95.4/../../../../include/g++-3/std/bastring.h:152: undefined reference to `QApplication::~QApplication(void)'
collect2: ld returned 1 exit status
请告诉我错过。
我可以看到你很有趣,为什么Qt版本太旧了。那么,这不是我的选择。在我的工作中,我们只允许使用这个Qt,因为它得到了我国特殊的政府组织的批准。 – FunnyHorse