首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC无法识别Qt库或/和包含文件

GCC无法识别Qt库或/和包含文件
EN

Stack Overflow用户
提问于 2017-07-27 14:54:23
回答 2查看 2.6K关注 0票数 0

我正在尝试从控制台编译我的Qt应用程序。规格如下: MCBC 3.0 (预装Qt和gcc),Qt 4.6.4,gcc v4.1.2,qmake v2.01a。

我的测试qt应用程序只包含两个文件: basket.pro和main.cpp。

basket.pro:

代码语言:javascript
复制
TARGET = basket
TEMPLATE = app
SOURCES += main.cpp
HEADERS += 

main.cpp:

代码语言:javascript
复制
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    return a.exec();
}

我需要从控制台编译该应用程序。

我有两个虚拟机。VM #1已经安装了QtCreator,QtCreator编译这个app没有问题,也可以通过"qmake“和"make”从控制台编译app。但也有没有安装QtCreator的VM#2,这就是问题所在。我尝试通过命令"qmake make“编译应用程序,尝试使用由QtCreator创建的Makefile,尝试只使用具有显式定义的路径到Qt库、包含文件和链接库的gcc comand,但总是收到相同的错误。例如,我使用了QtCreator用来成功编译此应用程序的2个gcc命令:

代码语言:javascript
复制
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

因此,在执行第二个命令后,我得到了与往常一样的错误:

代码语言:javascript
复制
[root@ARM 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 

请告诉我错过了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-27 14:58:46

因为使用了/usr/lib/gcc-lib/i586-linux/2.95.4/,所以您的GCC编译器是2.95版(上个世纪的一个太旧的版本,不符合C++11标准,而且众所周知它有很多be )。只需运行g++ -vg++ --version即可检查编译器的版本。(你可以喝点PATH

你应该将你的编译器升级到更新的版本(至少是GCC 6,最好是2017年7月的GCC 7 )

顺便说一句,我也推荐升级你的Qt库。当前版本(2017年7月)是Qt5.9,您应该使用一些Qt5。

然后,您需要重新生成您的makefile,在QT中添加更多,作为answered by ilbeldus

请注意,您可以使用pkg-config来帮助编译Qt应用程序(可能在您的Makefile中)。您仍然需要显式地使用moc。例如,您可以编译一些Qt C++图形用户界面文件foo.cc (在使用moc之后),例如

代码语言:javascript
复制
 g++ -Wall -g -c $(pkg-config --cflags Qt5Gui) foo.c

对于链接选项,您可以使用$(pkg-config --libs Qt5Gui)

我不推荐使用你的旧的MCBC东西(即使用谷歌搜索,我也没有找到它是什么),特别是如果它已经过时了。

票数 2
EN

Stack Overflow用户

发布于 2017-07-27 14:58:19

您的.pro文件中缺少QT变量的设置。

添加QT += core gui,重新运行qmake并尝试重新编译

请参阅此处的文档:http://doc.qt.io/qt-4.8/qmake-variable-reference.html#qt

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45343375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档