1、在 https://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ 下载 Windows 版 ARM 交叉编译工具链。

Sourcery CodeBench Lite Edition

Sourcery CodeBench Lite Edition is a free, unsupported version of Sourcery CodeBench, available for select processors.

Sourcery CodeBench is a complete development environment for embedded C/C++ development. Sourcery CodeBench Lite Edition includes:

  • GNU C and C++ compilers
  • GNU assembler and linker
  • C and C++ runtime libraries
  • GNU debugger

我使用的是 arm-2014.05-29-arm-none-linux-gnueabi

2、加入到系统环境变量 Path 中,测试:arm-none-linux-gnueabi-gcc -v

3、下载 Qt 源码 http://download.qt.io/archive/qt/5.6/5.6.1/single/qt-everywhere-opensource-src-5.6.1.7z

4、安装、配置 python、perl 等必要环境,可参考 Qt 5.6 静态编译

5、配置

将 /qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 中的:

QMAKE_CC                = arm-linux-gnueabi-gcc
QMAKE_CXX               = arm-linux-gnueabi-g++
QMAKE_LINK              = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++

修改为:

QMAKE_CC                = arm-none-linux-gnueabi-gcc
QMAKE_CXX               = arm-none-linux-gnueabi-g++
QMAKE_LINK              = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

进入源码根目录,执行配置命令:

configure -opensource -confirm-license -release -xplatform linux-arm-gnueabi-g++ -prefix "C:\Qt\kits\linux-arm-5.6.1" -qt-sql-sqlite -no-openssl -no-opengl -no-openvg -nomake tools -nomake examples -nomake tests

需要注意,交叉编译使用了 -xplatform 而不是 -platform

6、编译

执行命令:mingw32-make

7、安装

将编译好的工具包安装在配置中定义的位置:-prefix "C:\Qt\kits\linux-arm-5.6.1"

执行命令:mingw32-make install

8、配置 Qt Creator

工具>选项>构建和运行 中作如下配置:


后记:

1、使用 Linaro GCC 工具链

在使用 Sourcery CodeBench Lite 之前我使用 gcc-linaro-5.3-2016.02-i686-mingw32_arm-linux-gnueabi 编译 qt-everywhere-opensource-src-5.6.1 一直出现错误,无奈只能暂时放弃。

看到 qt-everywhere-opensource-src-5.6.2 发布了,于是今天打算再编译一下试试看,不过这次使用的是更新的 gcc-linaro-6.1.1-2016.08-i686-mingw32_arm-linux-gnueabi,结果成功了。