我一直在尝试在Windows上为树莓pi3构建qt 6个月。我已经尝试了很多教程,阅读了很多论坛,但没有成功的结果。
我可以通过遵循RaspberryPi2EGLFS在virtualbox上的ubuntu 14.04上构建qt,它有一些错误,但我可以解决它们。我可以部署一个应用程序。我想在Windows上做同样的事情。
有一个关于在http://visualgdb.com/tutorials/raspberry/qt/embedded/中构建Windows的教程我不能通过遵循它来构建。
一个可以为覆盆子pi3构建qt的人通过引用上面的教程写入qt论坛。 https://forum.qt.io/topic/68381/cross-compile-qt-windows-to-raspberry-3我试过这个我再次收到错误。
我尝试了许多QT版本,例如5.6.1,5.7.0,5.8.0,5.6.2(最近发布的长期支持版本)。 Mingw版本大于4.9,MSVC2015等。
每个版本都有不同的错误。 5.7.0有一个错误,他们说这个bug在5.8.0中解决了,5.8.0中还有另一个错误。这个问题没有完成。
我只想在Windows上为raspberry pi3轻松构建qt。
请有人写一个教程,让所有工具与支持Raspberry Pi3的版本协调一致。
visualgdb提供了编译器的链接,但它们是Raspberry Pi3的旧版本,它有错误,我无法构建Qt。
最后输出:
执行阴影构建...准备构建树...运行 配置测试(阶段1)...预编译头支持 启用。 C:/ SysGCC / Raspberry / bin / arm-linux-gnueabihf-g ++ -c -fvisibility = hidden fvisibility.c启用符号可见性控制。 C:/ sysgcc /覆盆子/ bin中/../ LIB / GCC /臂-Linux的gnueabihf / 4.9 /../../../../臂-Linux的gnueabihf / bin中/ ld.gold.exe: -plugin:未知选项c:/ sysgcc / raspberry / bin /../ lib / gcc / arm-linux-gnueabihf / 4.9 /../../../../ arm-linux-gnueabihf / bin / ld .gold.exe: 使用--help选项获取用户信息collect2.exe:error:ld 返回1退出状态C:/ SysGCC / Raspberry / bin / arm-linux-gnueabihf-g ++ --sysroot = C:/ SysGCC / Raspberry / arm-linux-gnueabihf / sysroot -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c bsymbolic_functions.c:2:2:错误:#error "此架构上的符号功能绑定可能会被破坏, 禁用它(参见QTBUG-36129)。" 错误"此架构上的符号功能绑定可能会被破坏,禁用它(请参阅QTBUG-36129)。" ^禁用符号功能绑定。 DEFAULT_INCDIRS =" C:\ sysgcc \覆盆子\ BIN ../臂-Linux的gnueabihf /包括/ C ++ / 4.9 C:\ sysgcc \覆盆子\ BIN ../臂-Linux的gnueabihf /包括/ C ++ / 4.9 /向后 C:\ sysgcc \覆盆子\ BIN ../ LIB / GCC /臂-Linux的gnueabihf / 4.9 /包括 C:\ sysgcc \覆盆子\ BIN ../ LIB / GCC /臂-Linux的gnueabihf / 4.9 /包含 - 固定 C:\ sysgcc \覆盆子\ BIN ../臂-Linux的gnueabihf /包括 C:/ SysGCC /树莓/臂-Linux的gnueabihf / SYSROOT的/ usr /包括/臂-Linux的gnueabihf C:/ SysGCC / Raspberry / arm-linux-gnueabihf / sysroot / usr / include" DEFAULT_LIBDIRS =" C ^ /sysgcc/raspberry/lib/gcc/arm-linux-gnueabihf/4.9/;c / sysgcc /覆盆子/ LIB / GCC /臂-Linux的gnueabihf /; C ^ / sysgcc /覆盆子/ LIB / GCC /; C ^ / sysgcc /覆盆子/臂-Linux的gnueabihf / LIB /; C ^ / SysGCC /树莓/臂-Linux的gnueabihf / SYSROOT / LIB /臂-Linux的gnueabihf /; C ^ / SysGCC /树莓/臂-Linux的gnueabihf / SYSROOT / LIB /; C ^ / SysGCC /树莓/臂-Linux的gnueabihf / SYSROOT / usr / lib中/ ARM-Linux的gnueabihf /; C ^ / SysGCC / Raspberry / arm-linux-gnueabihf / sysroot / usr / lib"完成运行 配置测试。创建qmake ...... C:/ SysGCC / Raspberry / bin / arm-linux-gnueabihf-g ++ -c -o qlibraryinfo.o -pipe -fno-keep-inline-dllexport -U__STRICT_ANSI__ -ffunction-sections -O2 -DUNICODE -g -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qmake -IC:/ qt / qt -everywhere-opensource-src-5.6.2 / qtbase / qmake / library -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qmake/generators -IC:/ qt / qt-everywhere-opensource -src-5.6.2 / qtbase / QMAKE /发电机/ UNIX -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qmake/generators/win32 -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qmake/generators/mac -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qmake/generators/integrity -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/include -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtCore -IC:/ qt / qt-everywhere-opensource-src-5.6.2 / qtbase / include / QtCore / 5.6.2 -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtCore/5.6.2/QtCore -I ../src/Illib/global-DHAVE_QCONFIG_CPP -IC:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/mkspecs/win32-g++ -IC:/ qt / qt-everywhere-opensource-src -5.6.2 / qtbase / tools / shared -DQT_VERSION_STR =" 5.6.2" -DQT_VERSION_MAJOR = 5 -DQT_VERSION_MINOR = 6 -DQT_VERSION_PATCH = 2 -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1 -DQT_JSON_READONLY -DQT_NO_STANDARDPATHS C:/ QT / QT-无处不开源-src-5.6.2 / qtbase / src目录/ corelib的/全球/ qlibraryinfo.cpp arm-linux-gnueabihf-g ++:错误:命令行选项 ' -fno-保直列DLLEXPORT'此配置不支持 make:*** [qlibraryinfo.o]错误1
我用4.9.2改变MinGW比生成qmake.exe然后,我改变了一行(如果是,那么### ['!' -f" $ outpath / bin / qmake"];如果['!' -f" $ outpath / bin / qmake"];那么### ['!&#39 ; -f" $ outpath / bin / qmake"];)在qtbase中配置文件。我再次运行configure。
$ ../qt-everywhere-opensource-src-5.6.2/configure -platform win32-g ++ -xplatform linux-arm-gnueabi-g ++ -release -opengl es2 -device linux-rpi3-g ++ -sysroot C:/ SysGCC / Raspberry / arm-linux-gnueabihf / sysroot -prefix / usr / local / qt5 -device-option CROSS_COMPILE = C:/ SysGCC / Raspberry / bin / arm-linux-gnueabihf- -qt-xcb -verbose
输出:
构建选项:配置..........可访问性 accessibility-atspi-bridge alsa audio-backend c ++ 11 c ++ 14 clock-gettime clock-monotonic compile_examples concurrent cross_compile cups dbus egl eglfs eglfs_brcm enable_new_dtags evdev eventfd freetype full-config getaddrinfo getifaddrs harfbuzz iconv icu inotify ipv6ifname large-config largefile libudev linuxfb medium-config minimal-config mremap neon opengl opengles2 openssl pcre png posix_fallocate precompile_header qpa qpa reduce_exports release rpath共享small-config system-jpeg system-zlib threadsafe-cloexec xcb xcb-glx xcb-plugin xcb-qt xcb-xlib xinput2 xkbcommon-qt xlib xrender构建部件............ libs模式................... 发布使用消毒剂......无使用C ++标准..... c ++ 14使用黄金链接器.......否使用新的DTAGS ........是
使用PCH ..............是使用LTCG ............. no Target 编译器支持: 霓虹.................是Qt模块和选项:Qt D-Bus ............... yes(加载dbus-1 在运行时)Qt并发..........是Qt GUI ................. 是的Qt Widgets .............是大文件.............是 QML调试..........是使用系统代理.....不
支持启用:辅助功能..........是ALSA ...................是CUPS ...................是Evdev ..................是FontConfig .............没有FreeType ...............是(捆绑副本)Glib ...................没有
GStreamer ..............没有GTK主题..............没有HarfBuzz ...............是(捆绑副本)Iconv ..................是
ICU ....................是图像格式: GIF ..................是(插件,使用捆绑副本) JPEG .................是(插件,使用系统库) PNG ..................是(在QtGui中,使用捆绑副本)libinput ................ no记录后端: 记者...............不 syslog ............... no mtdev .................. no网络: getaddrinfo ..........是的 getifaddrs ...........是的 IPv6 ifname ..........是的 libproxy .............. no OpenSSL ..............是(在运行时加载库)OpenGL / OpenVG: EGL ..................是的 OpenGL ...............是(OpenGL ES 2.0+) OpenVG ...............没有PCRE ...................是(捆绑副本)pkg-config ..... ........是PulseAudio .............没有 QPA后端: DirectFB .............没有 EGLFS ................是的 EGLFS i.MX6 ........没有 EGLFS i.MX6 Wayland。没有 EGLFS EGL设备....没有 EGLFS GBM ..........没有 EGLFS马里.........没有 EGLFS Raspberry Pi。是 EGLFS X11 ..........没有 LinuxFB ..............是的 Mir客户............没有 XCB ..................是(捆绑副本) X上的EGL ...........没有 GLX ................是的 MIT-SHM ............是的 Xcb-Xlib ...........是的 Xcursor ............是(在运行时加载) Xfixes ............. yes(在运行时加载) 习.................不 Xi2 ................是的 Xinerama ........... yes(在运行时加载) Xrandr ............. yes(在运行时加载) Xrender ............是的 XKB ................是的 XShape .............是的 XSync ..............是的 XVideo .............是会话管理.....是SQL驱动程序: DB2 ..................没有 InterBase ............没有 MySQL ................没有 OCI ..................没有 ODBC .................是(插件) PostgreSQL ...........没有 SQLite 2 .............没有 SQLite ............... yes(插件,使用捆绑副本) TDS ..................是(插件)tslib ..................没有udev ...... .............是xkbcommon-x11 ...........是(捆绑 copy,XKB config root:not found)xkbcommon-evdev ......... no zlib ...................是(系统库)警告:找不到XKB配置root,使用-xkb-config-root设置 XKB配置数据的路径。这是键盘输入所必需的 支持。
注意:Qt在此系统上使用double for qreal。这是二进制的 与Qt 5.1不兼容。配置' -qreal float'创造一个 与5.1二进制兼容的构建。
Qt现已配置为构建。只需运行' make'。一切都好 建成后,你必须运行'make install'。 Qt将被安装到 的/ usr /本地/ QT5
在重新配置之前,请确保从中删除任何剩余物 以前的版本。
TheBUKs @DESKTOP-5D6JDFN MSYS / c / qt / qt-build $ make cd qtbase /&& (test -e Makefile || C:/qt/qt-build/qtbase/bin/qmake.exe C:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qtbase.pro -o Makefile )&& C:/ SysGCC / Raspberry / bin / make -f Makefile make [1]:进入 目录
C:/Qt/qt-build/qtbase' C:/qt/qt-build/qtbase/bin/qmake.exe -o Makefile C:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/qtbase.pro make[1]: Leaving directory
C:/ Qt / qt-build / qtbase' make [1]:进入 目录C:/Qt/qt-build/qtbase' cd src/ && ( test -e Makefile || C:/qt/qt-build/qtbase/bin/qmake.exe C:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/src/src.pro -o Makefile ) && C:/SysGCC/Raspberry/bin/make -f Makefile make[2]: Entering directory
C:/ Qt / qt-build / qtbase / src' C:/qt/qt-build/qtbase/bin/qmake.exe -o Makefile C:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/src/src.pro make [2]: 离开目录C:/Qt/qt-build/qtbase/src' make[2]: Entering directory
C:/ Qt / qt-build / qtbase / src' cd corelib /&& (测试-e Makefile.qtzlib || C:/qt/qt-build/qtbase/bin/qmake.exe C:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/src/corelib/qtzlib.pro -o Makefile.qtzlib)&& C:/ SysGCC / Raspberry / bin / make -f Makefile.qtzlib make [3]:进入目录C:/Qt/qt-build/qtbase/src/corelib' C:/qt/qt-build/qtbase/bin/qmake.exe -o Makefile.qtzlib C:/qt/qt-everywhere-opensource-src-5.6.2/qtbase/src/corelib/qtzlib.pro make[3]: Leaving directory
C:/ QT / QT-构建/ qtbase / SRC / corelib的' make [3]:首先输入目录C:/Qt/qt-build/qtbase/src/corelib' make[3]: Nothing to be done for
'。 make [3]:离开目录C:/Qt/qt-build/qtbase/src/corelib' The syntax of the command is incorrect. make[2]: *** [sub-bootstrap-make_first] Error 1 make[2]: Leaving directory
C:/ QT / QT-构建/ qtbase / SRC' make [1]:* [sub-src-make_first]错误2 make [1]:离开目录 `C:/ QT / QT-构建/ qtbase' make:*** [module-qtbase-make_first]错误2 *