Qt交叉编译Raspi3 - 致命错误:unistd.h:没有这样的文件或目录

Posted

技术标签:

【中文标题】Qt交叉编译Raspi3 - 致命错误:unistd.h:没有这样的文件或目录【英文标题】:Qt cross-compile Raspi3 - fatal error: unistd.h: No such file or directory 【发布时间】:2016-12-14 09:48:35 【问题描述】:

我正在关注wiki.qt.io/RaspberryPi_Beginners_Guide 的指南,在构建 Qtbase 时,我运行命令 make 并收到以下错误:

http://pastebin.com/a2cXFGbC

以及locate unistd.h的输出:

http://pastebin.com/F656G0eG

一些细节:PC Debian Jessie、Raspberry Pi 3、安装了 Raspbian 的 SD 卡(如指南所示)。

【问题讨论】:

【参考方案1】:

我的 configre 命令行(忽略所有 sysroot/prefix/hostprefix/extprefix 选项):

./configure -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -sysroot "$R" -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -make tools -prefix /usr/lib/arm-linux-gnueabihf/qt5 -extprefix /usr/lib/arm-linux-gnueabihf/qt5 -hostprefix /usr/lib/arm-linux-gnueabihf/qt5

(注意 pi2,可能还有 pi3 的配置)

以及 qtbase 中文件的补丁(更改以匹配您的 gcc 版本和路径):

---------------- mkspecs/devices/linux-rasp-pi2-g++/qmake.conf ----------------
index 9be3f40..fcef488 100644
@@ -11,11 +11,11 @@ QMAKE_INCDIR_EGL        = $$[QT_SYSROOT]/opt/vc/include \
                           $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \
                           $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux
 QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_EGL

 QMAKE_LIBS_EGL          = -lEGL -lGLESv2
-QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux
+QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux -I$$[QT_SYSROOT]/usr/include/c++/4.9/ -I$$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf/c++/4.9
 QMAKE_CXXFLAGS          = $$QMAKE_CFLAGS

 DISTRO_OPTS += hard-float

 # Preferred eglfs backend

【讨论】:

以上是关于Qt交叉编译Raspi3 - 致命错误:unistd.h:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

QT交叉编译时怎么添加静态库,急!!!

基于IMX53(freescale) ARM架构平台, Ubuntu20.xx版本下交叉编译Qt4.8.7

基于IMX53(freescale) ARM架构平台, Ubuntu20.xx版本下交叉编译Qt4.8.7

为 ARM 交叉编译 Qt 时出错

基于MIPS ARM架构平台, Ubuntu20.xx版本下交叉编译Qt5.12.xtslib-1.4

基于MIPS ARM架构平台, Ubuntu20.xx版本下交叉编译Qt5.12.xtslib-1.4