准备工作:首先,最不可思议的,是要在Linux下把QT编译一遍,因为库都是一样的,需要的就是一些Windows下的qmake、moc、uic之类的工具而已。因为QT源码很多地方不能在Windows下面交叉编译通过,虽然我改了一些代码和配置,但我只用它编译了qtbase、qtdeclarative这两个模块和qttools模块中的一部分。Linux下的编译可以参照我之前写的这篇文章。参考配置:开发包:./configure-extprefix/opt/qt/5.2.1/arm-prefix/usr-plugindir/usr/lib/qt/plugins-importdir/usr/lib/qt/imports-qmldir/usr/lib/qt/qml-makelibs-xplatformlinux-arm-gnueabi-g++-opengles2-confirm-license-opensource-xcb-xinput2-nomakeexamples-nomaketests-qt-zlib-qt-xcb-dbus-largefile-cups-no-fontconfig-glib-gtkstyle-qt-freetype-sysroot/opt/sysroot-arm-mysql_config/opt/sysroot-arm/usr/bin/mysql_config-v运行库:./configure-prefix/usr-plugindir/usr/lib/qt/plugins-importdir/usr/lib/qt/imports-qmldir/usr/lib/qt/qml-makelibs-xplatformlinux-arm-gnueabi-g++-opengles2-confirm-license-opensource-xcb-xinput2-nomakeexamples-nomaketests-qt-zlib-qt-xcb-dbus-largefile-cups-no-fontconfig-glib-gtkstyle-qt-freetype-sysroot/opt/sysroot-arm-mysql_config/opt/sysroot-arm/usr/bin/mysql_config-v做完这一步,你获得两样东西,sysroot和linux下的ARMQT开发文件。sysroot是编译QT之前,用Buildroot做的开发用根目录。这两个东西都要拷贝到Windows里,因为Windows不支持符号连接,拷贝需要需要去掉这些连接,这么做:cp\\.*,\\1\\2,;q\''-gt72&&\gdb--nx--batch--quiet-ex\''setconfirmoff\''-ex\"savegdb-index$$QMAKE_GDB_DIR\"-exquit\''$TARGET\''&& est-f$TARGET.gdb-index&&\$$QMAKE_OBJCOPY--add-section\''.gdb_index=$TARGET.gdb-index\''--set-section-flags\''.gdb_index=readonly\''\''$TARGET\''\''$TARGET\''&&\$$QMAKE_DEL_FILE$TARGET.gdb-index||true很显然,这段代码把调试用的GDB默认为“gdb”了,所以应该改成你用的gdb,比如arm-linux-gnueabihf-gdb。另外,这里的sed对GDB版本的判断,无法识别像“GNUgdbSourceryCodeBenchLite2019.05-297.7.50.20190217-cvs”这样的版本信息的,只能识别像“GNUgdbGDB7.6.1”这样的版本信息,所以你有可能看不到刚才那段提示。想解决,要么重新写一段sed的正则表达式,要么直接就把这个test...-gt72删掉。
龙小翠2019-11-05 22:18:43