2017-03-29 22 views
0

私のコンピュータでqt5.5を使用しています。 そして私はMakefileを作っている間に問題が発生しました。Ubuntu 14.04のクロスコンパイラでMakefileを作成中にエラーが発生しました

私はこのコードを送信してMakefileを取得します。

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

これは問題ありませんが、プログラムをビルドするために「make」を送信すると、このエラーが表示されます。

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 

その他の方法では、このコマンドを使ってMakefileを取得することもできます。

qmake test.pro 

この場合、私は自分のMakefileをうまくやっています。

しかし、私が-specを使ってqmake.configに向けると、上記のようなエラーが出ます。

なぜこのようなことが起こるのかわかりません。

私のクロスコンパイラにはmeta-toolchain-qt5が使用されています。

何かが間に合わなかったのですか、それともgccのバージョンが古すぎるのですか?

助けてください!

答えて

0

OpenEmbeddedで構築されたクロスコンパイラを使用する場合は、arm-poky-linux-gnueabi-g++を直接呼び出すことは避けてください。代わりに$CXXに電話する必要があります。その理由は、クロスコンパイラ内の組み込みのsysrootが毒されている(存在しないパスを指している)からです。たとえば、gcc reports sysroot is /not/existの説明を参照してください。この変更は、Yocto Projectリリース1.8で導入されました。Default Sysroot Poisoningを参照してください。

+0

しかし、私はそれを直接呼び出すことはしませんでした。 私はqmakeを使用すると、それを見つけることができます。 –

+0

私のqmake.configは間違った方法で書き込むことができますか? –

+0

これは私のqmake.configです。 '(../コモン/ 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- -mfpu =ネオン-DLINUX = 1 -DEGL_API_FB = 1 QMAKE_CFLAGS + = $$ IMX6_CFLAGS QMAKE_CXXFLAGS + = $$ IMX6_CFLAGS #DISTRO_OPTS + =ハードフロート DISTRO_OPTS + =ソフトフロート #好ましいeglfsバックエンド EGLFS_DEVICE_INTEGRATION = eglfs_viv include(../ common /linux_arm_device_post.conf) load(qt_config) –

関連する問題