1
votes

I have 2 versions of SDK for Qt Creator: Compiled from Open Source and Compiled from bitbake.

The Open Source SDK is working fine, but the bitbake one is having trouble recognizing the compiler. I have added the g++ compiler to build & Run and source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabias well.

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)

Here is the error one 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.

and here is the one without error, we could see that the make could not find the g++ compiler. How do I fix it?

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 Information:

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
1
Have you re-run qmake when changing SDK's? How does the start of the generated Makefile look like? Does it include a line like CXX = $(OE_QMAKE_CXX)? If so, what does running echo $OE_QMAKE_CXX immediately after getting the error give you? - Anders
How do I re-run qmake? All I did was to switch the Kits from Qt Creator. Since it fail at make, it didn't create any MakeFile - Charles C.
Ok, looking at the traces, it looks like qmake is being run. Do you have everything in source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi configured in QtCreator? (Or sourced in the same shell that starts QtCreator?). As the build fails during compilation, ${CC} is being empty, qmake will have created a Makefile for you. This is also indicated in your logs, as qmake exited normally. What happens if you try to run qmake and make in a shell? - Anders
I did not add anything other than the g++ compiler, the qmake, and add a kits with the sysroot. echo $OE_QMAKE_CXX return empty. I could ran qmake and make in shell, It create the makefile as the same as above, but make return the same error. - Charles C.

1 Answers

3
votes

As ${OE_QMAKE_CXX} is empty, that indicates to me that you haven't source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabiasenvironment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi.

This should work to compile by hand:

 . /opt/poky/charles/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
 echo $OE_QMAKE_CXX
 qmake
 make

(Assuming you don't need to pass any extra arguments to qmake).

Then do the following:

 . /opt/poky/charles/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
 echo $OE_QMAKE_CXX
 qtcreator

Note that you should start qtcreator from the same shell that you source environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi in.

This should get you going. Otherwise I'd suggest starting by getting a small, simple Qt appliction building correctly.

For more in configuring QtCreator, you could for instance have a look at how to setup QtCreator for cross-compilation.

Update

As it seems that Qt5 isn't included in the SDK at all, we first have to generate a suitable SDK. My preferred way:

 bitbake your-image -c populate_sdk

This works, as long as your image recipe includes

 inherit populate_sdk_qt5

That would give you an SDK, whose sysroot would match your image.

The "older" way, is to use a special toolchain recipe. For Qt5 that would be meta-toolchain-qt5, or some recipe that includes/requires that one. In this case, you would run:

  bitbake meta-toolchain-qt5

Though, the recommended way is to use the image specific SDK.