Qt error: c: command not found / qmake could not locate g++ compiler
Qt error: c: command not found / qmake could not locate g++ compiler
我有 2 个版本的 Qt Creator SDK:从开源编译和从 bitbake 编译。
开源 SDK 工作正常,但 bitbake 无法识别编译器。我已将 g++ 编译器添加到 build & Run
和 source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
。
make: c: Command not found make: [moc_utils.o] Error 127 (ignored)
make:
Wl,-rpath-link,/opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib:
Command not found make: [quicknanobrowser] Error 127 (ignored)
这是编译器日志中的错误之一:
14:27:55: Running steps for project quicknanobrowser...
14:27:55:
Starting:
"/opt/poky/charles/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake"
/home/hbulab/Qt5.5.1/Examples/Qt-5.5/webengine/quicknanobrowser/quicknanobrowser.pro
-r -spec linux-oe-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug
14:27:55: The process
"/opt/poky/charles/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake"
exited normally.
14:27:55: Starting: "/usr/bin/make"
c -pipe -g
-DLINUX=1 -DEGL_API_FB=1 -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBENGINE_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I.
这是没有错误的,我们可以看到 make
找不到 g++ 编译器。我如何解决它?
14:29:08: Running steps for project quicknanobrowser... 14:29:08:
Starting: "/opt/hio-imx6dl-board/opt/Qt5daisy/bin/qmake"
/home/hbulab/Qt5.5.1/Examples/Qt-5.5/webengine/quicknanobrowser/quicknanobrowser.pro
-r -spec devices/linux-imx6-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug
14:29:09: The process
"/opt/hio-imx6dl-board/opt/Qt5daisy/bin/qmake" exited normally.
14:29:09: Starting: "/usr/bin/make"
/opt/poky/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
-c -pipe -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=hard -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBENGINE_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I.
MakeFile 信息:
MAKEFILE = Makefile
####### Compiler, tools and options
CC = $(OE_QMAKE_CC)
CXX = $(OE_QMAKE_CXX)
DEFINES = -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBENGINE_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
CFLAGS = -pipe $(OE_QMAKE_CFLAGS) -g -DLINUX=1 -DEGL_API_FB=1 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe $(OE_QMAKE_CXXFLAGS) -g -DLINUX=1 -DEGL_API_FB=1 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I../../../Qt5.5.1/Examples/Qt-5.5/webengine/quicknanobrowser -I. -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5 -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWebEngine -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtQuick -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtQml -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I/opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++
QMAKE = /opt/poky/charles/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
由于 ${OE_QMAKE_CXX}
是空的,这表明您没有来源 environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabiasenvironment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
。
这应该可以手动编译:
. /opt/poky/charles/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
echo $OE_QMAKE_CXX
qmake
make
(假设您不需要向 qmake 传递任何额外的参数)。
然后执行以下操作:
. /opt/poky/charles/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
echo $OE_QMAKE_CXX
qtcreator
请注意,您应该从源 environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
所在的同一个 shell 启动 qtcreator。
这应该让你继续。否则,我建议首先正确构建一个小型、简单的 Qt 应用程序。
有关配置 QtCreator 的更多信息,您可以查看 how to setup QtCreator for cross-compilation。
更新
Qt5好像根本没有包含在SDK中,我们首先要生成一个合适的SDK。我的首选方式:
bitbake your-image -c populate_sdk
这行得通,只要您的图片配方包含
inherit populate_sdk_qt5
这将为您提供一个 SDK,其 sysroot 将与您的映像相匹配。
"older"方式,就是使用特殊的工具链配方。对于 Qt5,那将是 meta-toolchain-qt5
,或者某些 includes/requires 的食谱。在这种情况下,你会 运行:
bitbake meta-toolchain-qt5
不过,推荐的方法是使用图像专用 SDK。
我有 2 个版本的 Qt Creator SDK:从开源编译和从 bitbake 编译。
开源 SDK 工作正常,但 bitbake 无法识别编译器。我已将 g++ 编译器添加到 build & Run
和 source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
。
make: c: Command not found make: [moc_utils.o] Error 127 (ignored)
make: Wl,-rpath-link,/opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib:
Command not found make: [quicknanobrowser] Error 127 (ignored)
这是编译器日志中的错误之一:
14:27:55: Running steps for project quicknanobrowser...
14:27:55: Starting: "/opt/poky/charles/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake" /home/hbulab/Qt5.5.1/Examples/Qt-5.5/webengine/quicknanobrowser/quicknanobrowser.pro -r -spec linux-oe-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug
14:27:55: The process "/opt/poky/charles/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake" exited normally.
14:27:55: Starting: "/usr/bin/make"
c -pipe -g -DLINUX=1 -DEGL_API_FB=1 -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBENGINE_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I.
这是没有错误的,我们可以看到 make
找不到 g++ 编译器。我如何解决它?
14:29:08: Running steps for project quicknanobrowser... 14:29:08: Starting: "/opt/hio-imx6dl-board/opt/Qt5daisy/bin/qmake" /home/hbulab/Qt5.5.1/Examples/Qt-5.5/webengine/quicknanobrowser/quicknanobrowser.pro -r -spec devices/linux-imx6-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug
14:29:09: The process "/opt/hio-imx6dl-board/opt/Qt5daisy/bin/qmake" exited normally.
14:29:09: Starting: "/usr/bin/make"
/opt/poky/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -c -pipe -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=hard -g -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBENGINE_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I.
MakeFile 信息:
MAKEFILE = Makefile
####### Compiler, tools and options
CC = $(OE_QMAKE_CC)
CXX = $(OE_QMAKE_CXX)
DEFINES = -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBENGINE_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
CFLAGS = -pipe $(OE_QMAKE_CFLAGS) -g -DLINUX=1 -DEGL_API_FB=1 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe $(OE_QMAKE_CXXFLAGS) -g -DLINUX=1 -DEGL_API_FB=1 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I../../../Qt5.5.1/Examples/Qt-5.5/webengine/quicknanobrowser -I. -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5 -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWebEngine -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtQuick -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtQml -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -isystem /opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I/opt/poky/charles/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++
QMAKE = /opt/poky/charles/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
由于 ${OE_QMAKE_CXX}
是空的,这表明您没有来源 environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabiasenvironment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
。
这应该可以手动编译:
. /opt/poky/charles/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
echo $OE_QMAKE_CXX
qmake
make
(假设您不需要向 qmake 传递任何额外的参数)。
然后执行以下操作:
. /opt/poky/charles/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
echo $OE_QMAKE_CXX
qtcreator
请注意,您应该从源 environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
所在的同一个 shell 启动 qtcreator。
这应该让你继续。否则,我建议首先正确构建一个小型、简单的 Qt 应用程序。
有关配置 QtCreator 的更多信息,您可以查看 how to setup QtCreator for cross-compilation。
更新
Qt5好像根本没有包含在SDK中,我们首先要生成一个合适的SDK。我的首选方式:
bitbake your-image -c populate_sdk
这行得通,只要您的图片配方包含
inherit populate_sdk_qt5
这将为您提供一个 SDK,其 sysroot 将与您的映像相匹配。
"older"方式,就是使用特殊的工具链配方。对于 Qt5,那将是 meta-toolchain-qt5
,或者某些 includes/requires 的食谱。在这种情况下,你会 运行:
bitbake meta-toolchain-qt5
不过,推荐的方法是使用图像专用 SDK。