qt版本更新比较快,不知道选哪个版本合适,故选择一个较新版本的。
平台imx6 + linux4.1.16 + qt5.10.1
采用明远智睿提供的编译器:fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh,安装在目录/opt/fsl-imx-fb/4.1.15-2.1.0/目录下
明远已经帮客户设置好了编译环境变量,在文件/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/env-*****.sh文件里面。
运行该文件即可配置好环境。
接着下载QT5.10.1源码并解压:
源码配置方式参考....../qtbase/mkspec/device/linux-imx6-g++/qmake.conf文件,
推荐配置为:./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi -nomake examples -nomake tests -v
根据自己的安装目录更改-prefix 和 -extprefix选项,并且更改好交叉编译器环境,
在配置过程中发现can not find crti.c,crt1.o等错误,
查找编译器目录下存在这几个文件,故很大可能是环境变量有问题,仔细检查了N遍环境变量配置,没发现有问题的地方,
比对明远他提供的环境变量配置文件,发现--sysroot指定的路径和SDKTARGETSYSROOT环境变量和sysroot设置一样的值,果断把sysroot指定为SDKTARGETSYSROOT,在执行configure,故障解除。
接着执行make
报错找不到zconf.h目录下定义的几个宏,原因应该是电脑zlib库版本的问题,于是采用qt自身的zlib库,及在配置的时候加上-qt-zlib配置选项
继续make 成功。接下来就是将编译好的库文件放到开发板的文件系统里面,安放位置由编译配置时的-prefix指定。设置好QT运行环境变量。如何设置,请听下回详解。