2017-03-06 103 views
1

我有一个工作在Yocto Krogoth上的Nitrogen6x主板,下一个版本使用core-image-sato。我已经安装了Qt Creator 3.5.1(基于Qt 5.5.1),并根据[Build & Install Qt5 toolchain]文件添加了我的氮气6x板套件。我已经添加了一个示例Qt快速应用程序,并选择了Qt Quick 2.1作为组件集并尝试编译源代码,我注意到下面的错误。Yocto/Qt5.6:无法构建示例Qt应用程序

19:04:25: Running steps for project untitled6... 
19:04:25: Starting: "/opt/poky/2.1.1/sysroots/i686-pokysdk-linux/usr/bin/qt5/qmake" /home/test/untitled6/untitled6.pro -r -spec linux-g++ 
19:04:25: The process "/opt/poky/2.1.1/sysroots/i686-pokysdk-linux/usr/bin/qt5/qmake" exited normally. 
19:04:25: Starting: "/usr/bin/make" 
g++ -c -pipe -O2 -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../untitled6 -I. -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5 -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtQuick -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtQml -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I/opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-g++ -o main.o ../untitled6/main.cpp 
/opt/poky/2.1.1/sysroots/i686-pokysdk-linux/usr/bin/qt5/rcc -name qml ../untitled6/qml.qrc -o qrc_qml.cpp 
g++ -c -pipe -O2 -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../untitled6 -I. -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5 -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtQuick -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtQml -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -isystem /opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I/opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-g++ -o qrc_qml.o qrc_qml.cpp 
g++ -Wl,-O1 -o untitled6 main.o qrc_qml.o -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lGLESv2 -lpthread 
/usr/bin/ld: cannot find -lQt5Quick 
/usr/bin/ld: cannot find -lQt5Gui 
/usr/bin/ld: cannot find -lQt5Qml 
/usr/bin/ld: cannot find -lQt5Network 
/usr/bin/ld: cannot find -lQt5Core 
/usr/bin/ld: cannot find -lGLESv2 
collect2: ld returned 1 exit status 
make: *** [untitled6] Error 1 
19:04:26: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project untitled6 (kit: Nitrogen) 
When executing step 'Make' 
19:04:26: Elapsed time: 00:01. 

所有Qt库是/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/include/qt5/下存在和我有我的包下正确设置SYSROOT路径,但我无法弄清楚这是为什么我的应用程序无法引用这些库。任何对此的帮助深表谢意。提前致谢。

回答

1

的mkspec指向你的包似乎是错误的一个(linux-g++),从您的构建日志

-I/opt/poky/2.1.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-g++ 

报价时为建设一个nitrogen6x,它应该有可能是linux-oe-g++代替。这可以在您选择的Qt版本中默认设置,或者可以通过在QtCreator的选项下的“mkspec”下修改Kit本身来设置。

您看到的错误可能是由于库所指向的ABI &体系结构与您编译的x86/64代码不兼容。

如果遇到问题(即编译关于“C”未找到的错误),请确保在启动QtCreator之前获取Yocto的环境文件。这将设置交叉编译器的路径。例如:

source /opt/poky/1.6.2/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi 
~/Qt/Tools/QtCreator/bin/qtcreator 
+0

是的。我尝试在我的工具包中添加'linux-oe-g ++''Qt mkspec'。我注意到错误'make:c:Command not found'。然后,我尝试在我的'〜/ Qt/Tools/QtCreator/bin/qtcreator.sh'脚本中添加'source /opt/poky/ 2.1.1/environment-setup-cortexa9hf-neon-poky-linux-gnueabi', !/ bin/sh',然后启动'sudo sh qtcreator.sh'并尝试构建并运行。非常感谢你。 – user12345

+0

很高兴帮助:) –