Linux Qt错误:c:找不到命令/qmake找不到g++;编译程序

Linux Qt错误:c:找不到命令/qmake找不到g++;编译程序,linux,qt,qt5,qt-creator,bitbake,Linux,Qt,Qt5,Qt Creator,Bitbake,我有两个版本的QtCreator SDK:从开源编译和从bitbake编译 开源SDK工作正常,但bitbake SDK在识别编译器时遇到了问题。我已经将g++编译器添加到build&Run和source-environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi make:c:未找到命令make:[moc_utils.o]错误127(已忽略) 制作: Wl,-rpath链接,/opt/poky/charles/sysroot/cortexa

我有两个版本的QtCreator SDK:从开源编译和从bitbake编译

开源SDK工作正常,但bitbake SDK在识别编译器时遇到了问题。我已经将g++编译器添加到
build&Run
source-environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi

make:c:未找到命令make:[moc_utils.o]错误127(已忽略)

制作: Wl,-rpath链接,/opt/poky/charles/sysroot/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib:

未找到命令生成:[quicknanobrowser]错误127(已忽略)

以下是错误一编译器日志:

14:27:55:正在运行project quicknanobrowser的步骤

14:27:55: 启动: “/opt/poky/charles/sysroot/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:过程 “/opt/poky/charles/sysroot/x86_64-pokysdk-linux/usr/bin/qt5/qmake” 正常退出

14:27:55:开始:“/usr/bin/make”

c-管道-g -DLINUX=1-DEGL_API_FB=1-Wall-W-D_可重入-fPIC-DQT_QML_调试-DQT_声明性_调试-DQT_WEBENGINE_LIB-DQT_QUICK_LIB-DQT_WIDGETS_LIB-DQT_GUI_LIB-DQT_QML_LIB-DQT_网络_LIB-DQT_核心_LIB-I

这里是一个没有错误的,我们可以看到
make
找不到g++编译器。我怎么修理它

14:29:08:正在运行project quicknanobrowser的步骤。。。14:29:08: 开始:“/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:过程 “/opt/hio-imx6dl-board/opt/Qt5daisy/bin/qmake”正常退出

14:29:09:开始:“/usr/bin/make”

/opt/poky/1.6.1/sysroot/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_可重入-fPIC-DQT_QML_调试-DQT_声明性_调试-DQT_网络引擎_库-DQT_快速_库-DQT_小部件_库-DQT_图形库-DQT_图形库-DQT_网络_库-DQT_核心_库-I

生成文件信息:

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}
为空,这向我表明您没有source
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的更多信息,例如,您可以查看

更新 因为似乎Qt5根本不包含在SDK中,所以我们首先必须生成一个合适的SDK。我喜欢的方式是:

 bitbake your-image -c populate_sdk
只要你的图像配方包括

 inherit populate_sdk_qt5
这将为您提供一个SDK,其sysroot将与您的映像匹配

“旧”方法是使用一种特殊的工具链配方。对于Qt5,可能是
meta-toolchain-Qt5
,或者包含/需要该配方的某个配方。在这种情况下,您将运行:

  bitbake meta-toolchain-qt5

不过,推荐的方法是使用特定于映像的SDK。

更改SDK时是否重新运行了
qmake
?生成的Makefile的开始看起来如何?它是否包含类似于
CXX=$(OE\u QMAKE\u CXX)
的行?如果是这样,在收到错误后立即运行
echo$OE\u QMAKE\u CXX
会给您带来什么?如何重新运行QMAKE?我所做的只是从Qt Creator切换工具包。因为它在make时失败,所以它没有创建任何MakeFileOk,看看跟踪,它看起来像qmake正在运行。您是否在QtCreator中配置了
source-environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
中的所有内容?(或来源于启动QtCreator的同一外壳?)。由于编译期间生成失败,
${CC}
为空,qmake将为您创建一个Makefile。这也会在日志中指出,因为qmake正常退出。如果您尝试在shell中运行qmake和make,会发生什么情况?除了g++编译器、qmake和带有sysroot的kits之外,我没有添加任何东西<代码>回显$OE\u QMAKE\u CXX返回空。我可以在shell中运行qmake和make,它创建了与上面相同的makefile,但是返回了相同的错误。谢谢你的回答。在我获取了环境的源代码之后,$OE_QMAKE_CXX仍然是空的。所以我退一步比较了环境文件。结果所有的导出OE\u QMAKE都丢失了。你知道为什么会这样吗?哦,那完全是另一回事。在这种情况下,我假设您的SDK缺少Qt。请看我上面的添加。我所做的一个实际上来自
meta-toolchain-qt5
。它适用于5.2.1版本。自从我切换到5.5.1并添加Qt webengine之后。一切都出错了。请再次检查SDK。我刚刚编译了一个新的SDK,基于即将发布的2.1版本;这一个,以及基于1.6、1.8和2.0的SDK都设置了
OE\u QMAKE\u CXX
。但是,在较新版本中,
OE_QMAKE*
导出不是在
environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
中完成的,而是在该脚本来源的文件中完成的。所讨论的文件是
$OECORE\u NATIVE\u SYSROOT/environment setup.d/qt5.sh
。检查这个是否存在。否则,有关OE版本等的标准信息请求适用。我已编译