前言
前面搭建好了基础的交叉编译环境,但是我们使用到的主要是qt,所以要交叉编译qt,本篇交叉编译qt并安装ubuntu版本的qt,与紧接着本篇的后一篇紧密相关。
获取Qt源码
《获取下载Qt安装包,Qt源码全国网址备忘录(可不用注册,即可下载各版本Qt安装包和Qt源码包)》
下载Qt5.12.7版本如下图:
(建议,同时下载该版本的ubuntu安装包,包含了qtcreator和mingw32的编译器,这样可以在ubuntu上可以先跑部分与arm无关的代码)
前提
交叉编译需要先配好交叉编译器,可参照《Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析》。
交叉编译
步骤一:复制解压
步骤二:配置交叉编译器
先检查交叉编译器,如下图:
步骤三:修改平台文件
cd /home/yang/work/src/qt-everywhere-src-5.12.7/qtbase/mkspecs/linux-arm-gnueabi-g++ gedit qmake.conf
选择的是linux-arm-gnueabi-g++平台,修改器配置文件的编译器如下:
# # qmake configuration for building with arm-linux-gnueabi-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.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-himix200-linux-gcc QMAKE_CXX = arm-himix200-linux-g++ QMAKE_LINK = arm-himix200-linux-g++ QMAKE_LINK_SHLIB = arm-himix200-linux-g++ # modifications to linux.conf #QMAKE_AR = arm-linux-gnueabi-ar cqs #QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy #QMAKE_NM = arm-linux-gnueabi-nm -P #QMAKE_STRIP = arm-linux-gnueabi-strip QMAKE_AR = arm-himix200-linux-ar cqs QMAKE_OBJCOPY = arm-himix200-linux-objcopy QMAKE_NM = arm-himix200-linux-nm -P QMAKE_STRIP = arm-himix200-linux-strip load(qt_config)
步骤四:配置qt源码configure
./configure -prefix /home/yang/work/rootfs \ -opensource -confirm-license -release \ -linuxfb -qt-zlib -no-gif -qt-libpng \ -qt-libjpeg -qt-freetype -no-rpath -no-pch \ -no-avx -no-openssl -no-cups -no-dbus -no-eglfs \ -no-pkg-config -no-glib -no-iconv -no-opengl \ -xplatform linux-arm-gnueabi-g++ -make libs \ -nomake tools -qt-sqlite -nomake tests -v \ -skip qtgamepad \ -skip qtandroidextras \ -skip qtmacextras \ -skip qtx11extras \ -skip qtsensors \ -skip qtserialbus \ -skip qtwebchannel \ -skip qtwebsockets \ -skip qtlocation \ -skip qtquickcontrols \ -skip qtpurchasing \ -skip qtconnectivity \ -skip qtscxml \ -skip qtxmlpatterns \ -skip qtnetworkauth \ -skip qtspeech \ -skip qtscript \ -skip qtremoteobjects \ -skip qtcharts \ -skip qtdatavis3d \ -skip qtwebview
如下:
步骤五:编译make
make -j8
(注意:先是g++编译生成对应的qmake,后是arm-himix200-linux-g++编译生成对应的qt库)
出现“python: command not found”编译错误,如下:
安装pathon(python3的命令是:python3,此处是python),所及即便是已经安装了python3也需要安装python,当然也可以建立软连接python指向python3,笔者选择安装:
sudo apt-get install python
然后继续编译:
make -j8
非常漫长的额等待,都出去吃了个饭了…
步骤六:安装Qt
make install
步骤七:检查Qt
安装Qt5.12.17的ubuntu版本
步骤一:复制
步骤二:安装Qt
(PS:注意断网,不然需要登录qt账号)
整理一下/home下的东西,继续安装:
步骤三:新建一个Qt程序,运行“Hello world!!!”
出现老问题:
参照博文:《关于 编译QT项目时报错: error: cannot find -lGL 的解决方法》解决后,继续编译。
步骤四:宿主机运行“Hello world!!!”
添加个QLabel,写上你第一次接触编程的“Hello world!!!”,如下图: