2017-03-29 2 views
0

J'utilise qt5.5 sur mon ordinateur. Et j'ai eu le problème pendant que je fais mon Makefile.erreur lors de faire le Makefile sur le compilateur croisé sur Ubuntu 14.04

Je vais avoir Makefile en envoyant ce code.

qmake -spec ../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/devices/linux-imx6-g++/ -o Makefile test.pro 

Il n'a pas de problème avec ça, mais quand envoyer « faire » pour construire mon programme, il me montrer cette erreur.

arm-poky-linux-gnueabi-g++ -c -pipe -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=softfp -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5 -I../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I. -I../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/devices/linux-imx6-g++ -o main.o main.cpp 
In file included from ../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtGui/qwindowdefs.h:37:0, 
      from ../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets/qwidget.h:37, 
      from ../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets/qmainwindow.h:37, 
      from ../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets/QMainWindow:1, 
      from mainwindow.h:4, 
      from main.cpp:1: 
../../sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/include/qt5/QtCore/qglobal.h:39:21: fatal error: cstddef: No such file or directory 
compilation terminated. 
make: *** [main.o] Error 1 

Et dans l'autre méthode, je pourrais faire cette commande pour obtenir le Makefile aussi.

qmake test.pro 

Dans ce cas, lorsque je fais mon Makefile ça va bien. Mais si j'utilise -spec pour diriger vers le qmake.config que je veux, alors j'obtiendrai l'erreur comme ci-dessus.

Je ne sais pas pourquoi cela est arrivé. J'utilise la meta-toolchain-qt5 pour mon compilateur croisé.

Ai-je raté quelque chose ou est-ce la raison pour laquelle la version gcc est trop ancienne?

Aidez-nous!

Répondre

0

Vous ne devez jamais appeler directement arm-poky-linux-gnueabi-g++ lors de l'utilisation d'un compilateur croisé construit par OpenEmbedded. Au lieu de cela, vous devez appeler $CXX. La raison en est que le sysroot intégré dans le compilateur croisé est empoisonné (il pointe vers un chemin inexistant). Voir par exemple l'explication au gcc reports sysroot is /not/exist. Cette modification a été introduite dans Yocto Project version 1.8, voir Default Sysroot Poisoning.

+0

Mais je ne l'ai pas appelé directement il va chercher par lui-même. Quand j'utilise qmake alors il le trouvera. –

+0

Est-ce que mon qmake.config pourrait écrire de la mauvaise façon? –

+0

Ceci est mon qmake.config. 'inclure (../ common/linux_device_pre.conf) QMAKE_LIBS_EGL + = -lEGL QMAKE_LIBS_OPENGL_ES2 + = -lGLESv2 -lEGL -lGAL QMAKE_LIBS_OPENVG + = -lOpenVG -lEGL -lGAL IMX6_CFLAGS = -march = armv7- un -mfpu = néon -DLINUX = 1 -DEGL_API_FB = 1 QMAKE_CFLAGS + = $$ IMX6_CFLAGS QMAKE_CXXFLAGS + = $$ IMX6_CFLAGS #DISTRO_OPTS + = disque flottant DISTRO_OPTS + = soft-float # eglfs préféré backend EGLFS_DEVICE_INTEGRATION = eglfs_viv inclure (../ commun /linux_arm_device_post.conf) load (qt_config) ' –