1.下载Qt源码
Qt源码下载地址:Index of /archive/qt 其他源码和其他安装包都是有的。
下载的版本是5.9版本的Index of /archive/qt/5.9/5.9.7/singleQt源码。
2.解压源码
$ mkdir qt5.9
$cd qt5.9
将下载文件拷贝到当前目录下面。解压
$ xz -d qt-everywhere-opensource-src-5.9.7.tar.xz
$ tar -xvf qt-everywhere-opensource-src-5.9.7.tar
3.配置编译
#!/bin/bash
./configure \
-prefix /usr/local/qt5 \
-extprefix $HOME/qt5/qt5.9 \
-hostprefix $HOME/qt5/qt5.9 \
-release \
-static \
-make libs \
-device linux-imx6-g++ \
-device-option CROSS_COMPILE=/home/yuan/re-fsl/fsl-releases-bsp/imx-fb/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \
-sysroot /home/yuan/re-fsl/fsl-releases-bsp/imx-fb/tmp/sysroots/imx6qsabresd \
-opengl es2 \
-qpa eglfs -v \
-commercial \
-nomake examples \
-nomake tests -v \
-nomake tools \
-qt-freetype \
-qt-libjpeg \
-qt-libpng \
-qt-pcre \
-no-iconv \
-no-glib \
-no-kms \
-no-tslib \
-no-zlib \
-no-mtdev \
-no-accessibility \
-no-feature-accessibility \
-no-directfb \
-no-openssl \
-no-linuxfb \
-no-openvg \
-skip qtpim \
-skip qtsvg \
-skip qttools \
-skip qtsensors \
-skip qtsystems \
-skip qtlocation \
-skip qtserialbus \
-skip qtserialport \
-skip qtimageformats \
-skip qtrepotools \
-skip qtxmlpatterns \
-skip qtwebengine -v
其中的参数说明
-prefix:目标板的引用路径。 这个路径有两个作用,一个是指定目标机的Qt库路径,也就是说,当你把Qt库部署到目标机时,需要把Qt库拷贝到这个路径下,Qt程序就可以自动找到库。第二个是,如果你没有指定extprefix, install的时候会把Qt库部署到sysroot+prefix这个路径下。
-extprefix: 介于默认会把Qt库部署到sysroot+prefix路径下,如果你不想这样,可以设置extprefix, 这样Qt库会部署到这个目录下而不是sysroot下。可以避免污染sysroot。我个人建议编译的时候设置-prefix 和-extprefix 就可以了。
-hostprefix: 如果你还有更奇葩的需求,比如qmake等工具不要和Qt库安装在一起,那么这个参数就很适合你。这个参数是指定编译工具的安装位置,不包括Qt库。指定这个变量之后,qmake等工具会安装在这个目录下,extprefix下面就不会有这些工具了。我目前没想到这么做有啥好处。所以不建议使用。
建议编译时制定两个路径,一个是目标板部署路径-prefix,一个是宿主机部署路径 -extprefix. 如果不怕污染sysroot的话,指定一个prefix就可以了。
CROSS_COMPILE:交叉编译器目录,版主我的是yocto里面的交叉编译目录,根据自己的目录修改
-static :静态编译
-sysroot:文件系统目录
3.编译
make
make install
在配置的安装目录应该可以看到已经以下目录
bin
doc
include
lib
mkspecs
plugins
qml
在bin目录下可以找到qmake说明已经编译完成了
4.Qt Creator配置
1.配置编译器
2.配置qmake