2016-03-30 4 views
0

У меня есть 2 версии SDK для Qt Creator: скомпилирован из Open Source и скомпилирован из bitbake.Ошибка Qt: c: команда не найдена/qmake не удалось найти g ++ компилятор

SDK с открытым исходным кодом работает нормально, но битбаке не удается распознать компилятор. Я добавил компилятор 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)

Здесь ошибка один Compiler Log:

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 не может найти компилятор г ++. Как это исправить?

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 
+0

Вы повторно запускаете 'qmake' при смене SDK? Как выглядит начало созданного Makefile? Включает ли она строку типа 'CXX = $ (OE_QMAKE_CXX)'? Если да, то что работает 'echo $ OE_QMAKE_CXX' сразу после получения ошибки? – Anders

+0

Как повторно запустить qmake?Все, что я сделал, это переключить наборы из Qt Creator. Так как это не удалось сделать, он не создал MakeFile –

+0

Хорошо, глядя на следы, похоже, что qmake запускается. У вас есть все в 'source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi', настроенном в QtCreator? (Или в той же оболочке, которая запускает QtCreator?). Поскольку сборка не выполняется во время компиляции, '$ {CC}' пуст, qmake создаст Makefile для вас. Это также указывается в ваших журналах, так как qmake выходил нормально. Что произойдет, если вы попытаетесь запустить qmake и сделать в оболочке? – Anders

ответ

2

Как ${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 

Обратите внимание, что вы должны начать QtCreator из одной и той же оболочки, что вы источник environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi в

Это должно вас происходит. В противном случае я предлагаю начать с того, что вы получите небольшое, простое приложение для сборки Qt правильно.

Подробнее о настройке QtCreator вы можете, например, посмотреть на how to setup QtCreator for cross-compilation.

Update

Как кажется, что Qt5 не входит в SDK на всех, мы сначала должны сгенерировать соответствующий SDK. Мой предпочтительный способ:

bitbake your-image -c populate_sdk 

Это работает, до тех пор, как ваш рецепт включает в себя изображения

inherit populate_sdk_qt5 

Это даст вам SDK, чьи SYSROOT будет соответствовать вашему изображению.

«Пожилой» способ - использовать специальный рецепт инструментальной цепочки. Для Qt5, который будет meta-toolchain-qt5, или некоторый рецепт, который включает/требует его. В этом случае вы будете запускать:

bitbake meta-toolchain-qt5 

Хотя рекомендуется использовать SDK, специфичный для изображения.

+0

Спасибо за ответ. $ OE_QMAKE_CXX по-прежнему пуст после того, как у меня есть исходная среда. Поэтому я сделал шаг назад и сравнил файлы окружения. Выключится все «экспорт OE_QMAKE». Вы знаете, почему так? –

+0

О, это совсем другая вещь. В этом случае я предполагаю, что ваш SDK не имеет Qt. Se мое дополнение выше. – Anders

+0

Тот, что я сделал, был фактически из 'meta-toolchain-qt5'. Он работал для версии 5.2.1. С тех пор как я переключился на 5.5.1 и добавил Qt webengine. Все идет не так. –