我想從控制檯編譯我的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