qt5.10.1编译记录

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运行环境变量。如何设置,请听下回详解。

原文地址:https://www.cnblogs.com/llxbl/p/10005854.html