----------------------------------------------------------------------------------------------------------------------------
内核版本:linux 5.2.8
根文件系统:busybox 1.25.0
u-boot:2016.05
开发板:Mini2440
----------------------------------------------------------------------------------------------------------------------------
为实现目标嵌入式平台能够正常运行Qt程序,则需要在目标平台上部署QT运行环境。
一、QT编译和安装
1.1 QT版本介绍
QT的版本比较多,容易搞混。现分别介绍:
- Qt/X11 :指用于Linux/Unix的版本。如:我们常用的qt-x11-opensource-src-4.5.3.tar.gz,它是用于PC机linux平台的QT源码;
- Qt Windows:指用于Windows的版本;
- qt-everywhere:指(在配置时加上不同的参数)既可用于x86,也可用于ARM,如qt-everywhere-opensource-src-4.7.0.tar.gz、qt-everywhere-opensource-src-4.6.1.tar.gz;从Qt4.6开始提供这种源码包;
- Qt/Embedded:指用于ARM平台的版本。如qt-embedded-linux-opensource-src-4.5.3.tar.gzz是用于嵌入式ARM的qt源码包;从Qt4.1开始,Qt/Embedded改名为Qtopia Core,又从Qt4.4.1开始,Qtopia Core又改名为Qt for Embedded Linux,一般发行的源码包的名字叫做:qt-embeded-linux-xxxxxx,但是自动Qt4.6开始就不再提供这种源码包了,而是开始提供qt-everywhere源码包;
1.2 qt-everywhere下载
这里我们下载qt-everywhere,这里我们不去选择较新版本,主要由于新版本已经不支持ARMv4t架构了。我们下载5.0版本即可。
国内镜像站点下载地址:
- https://download.qt.io/archive(官方)
- Tsinghua University (不推荐,旧版本不全,刚才看有同步失败的情况)(TUNA)
- University of Science and Technology of China (推荐,旧版本较全)
在ubuntu服务器上下载程序包:
root@zhengyang:/work/sambashare# cd tools root@zhengyang:/work/sambashare/tools# wget https://download.qt.io/archive/qt/5.0/5.0.0/single/qt-everywhere-opensource-src-5.0.0.tar.xz
下载完后,解压程序包:
root@zhengyang:/work/sambashare/tools# tar -xvf qt-everywhere-opensource-src-5.0.0.tar.xz
1.3 修改qmake.conf
进入 qt-everywhere-opensource-src-5.0.0文件夹,针对Mini2440开发板,修改qmake.conf文件:
root@zhengyang:/work/sambashare/tools# cd qt-everywhere-opensource-src-5.0.0/ root@zhengyang:/work/sambashare/tools/qt-everywhere-src-6.0.0/# vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
源文件内容如下:
# # 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++ # 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 load(qt_config)
我们需要根据我们安装得交叉编译工具去修改,由于我之前安装的是arm-linux-gcc 4.8.3,
所以这里我们需要按照我们安装的交叉编译工具来修改QMAKE_CC、QMAKE_CXX等配置项:需要指定全路径。
# # qmake configuration for building with arm-linux-gnueabi-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib QT_QPA_DEFAULT_PLATFORM = linuxfb QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-gcc QMAKE_CXX = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-g++ QMAKE_LINK = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-g++ QMAKE_LINK_SHLIB = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-g++ # modifications to linux.conf QMAKE_AR = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-ar cqs QMAKE_OBJCOPY = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-objcopy QMAKE_NM = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-nm -P QMAKE_STRIP = /usr/local/arm/4.8.3/bin/arm-none-linux-gnueabi-strip load(qt_config)
1.4 配置安装
1.4.1 CMake安装
CMake是一个跨平台的构建工具,其支持程度要好于qmake。CMake的配置更加灵活、强大,也更容易维护。如果是Qt6.0+需要安装CMake,否则忽略即可。
注:是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
接着回到安装目录,安装CMake:
root@zhengyang:/work/sambashare# cd /work/sambashare/tools root@zhengyang:/work/sambashare/tools# wget https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2.tar.gz root@zhengyang:/work/sambashare/tools# tar xf cmake-3.21.2.tar.gz root@zhengyang:/work/sambashare/tools# cd cmake-3.21.2 root@zhengyang:/work/sambashare/tools/cmake-3.21.2# ./configure root@zhengyang:/work/sambashare/tools/cmake-3.21.2# make && make install root@zhengyang:/work/sambashare/tools/cmake-3.21.2# cd .. root@zhengyang:/work/sambashare/tools# rm -rf cmake-3.21.2
这里我们没有指定安装路径,默认是安装到了 /usr/local/bin路径。
root@zhengyang:/work/sambashare/tools# ll /usr/local/bin 总用量 47556 drwxr-xr-x 2 root root 4096 5月 7 13:45 ./ drwxr-xr-x 19 root root 4096 5月 7 13:48 ../ -rwxr-xr-x 1 root root 11319992 5月 7 13:45 ccmake* -rwxr-xr-x 1 root root 11589232 5月 7 13:45 cmake* -rwxr-xr-x 1 root root 12030672 5月 7 13:45 cpack* -rwxr-xr-x 1 root root 13098200 5月 7 13:45 ctest* -rwxr-xr-x 1 root root 230408 8月 27 2022 ffmpeg* -rwxr-xr-x 1 root root 123424 8月 27 2022 ffplay* -rwxr-xr-x 1 root root 139168 8月 27 2022 ffprobe* -rwxr-xr-x 1 root root 136720 8月 27 2022 ffserver* -rwxr-xr-x 1 root root 1568 8月 27 2022 sdl2-config*
1.4.2 tslib安装
要想Qt 支持触摸需要编译tslib ,以生成触摸相关插件。 tslib 多用于嵌入式系统中,是基本的触摸插件。在上一节linux设备树-LCD触摸屏设备驱动已经介绍了tslib的安装,这里不重复介绍了,当时我们将tslib安装到了ls /work/sambashare/drivers/tslib/tmp/路径下。
我们将其拷贝到/usr/local/tslib路径下:
root@zhengyang:/work/sambashare# ls drivers/tslib/tmp/ bin/ etc/ include/ lib/ share/ root@zhengyang:/work/sambashare# cp drivers/tslib/tmp/* /usr/local/tslib/ -rfd
1.4.3 Qt安装
接着回到qt安装目录:
root@zhengyang:/work/sambashare# cd tools/ qt-everywhere-opensource-src-5.0.0 root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# sudo mkdir -p /usr/local/Qt5.12
接下来配置Qt, 在Qt的源码目录下有一个可执行程序 configure, 运行./configure --help 可以看到详细的配置选项。
为了操作方便,可以写一个脚本文件autoconfigure.sh,文容如下:
sudo ./configure -prefix /usr/local/Qt5.12 \ -opensource \ -confirm-license \ -release \ -strip \ -shared \ -xplatform linux-arm-gnueabi-g++ \ -optimized-qmake \ -c++std c++11 \ --rpath=no \ -pch \ -skip qt3d \ -skip qtactiveqt \ -skip qtandroidextras \ -skip qtcanvas3d \ -skip qtconnectivity \ -skip qtdatavis3d \ -skip qtdoc \ -skip qtgamepad \ -skip qtlocation \ -skip qtmacextras \ -skip qtnetworkauth \ -skip qtpurchasing \ -skip qtremoteobjects \ -skip qtscript \ -skip qtscxml \ -skip qtsensors \ -skip qtspeech \ -skip qtsvg \ -skip qttools \ -skip qttranslations \ -skip qtwayland \ -skip qtwebengine \ -skip qtwebview \ -skip qtwinextras \ -skip qtx11extras \ -skip qtxmlpatterns \ -make libs \ -make examples \ -nomake tools -nomake tests \ -gui \ -widgets \ -dbus-runtime \ --glib=no \ --pcre=qt \ --zlib=qt \ -no-openssl \ --freetype=qt \ --harfbuzz=qt \ -no-opengl \ -linuxfb \ --xcb=no \ -tslib \ --libpng=qt \ --libjpeg=qt \ --sqlite=qt \ -plugin-sql-sqlite \ -I /usr/local/tslib/include \ -L /usr/local/tslib/lib
-I和-L分别指定头文件目录和库目录,在安装tslib生成的目录tmp中,这里提前将tmp目录复制到/usr/local/tslib中。
赋予配置脚本autoconfigure.sh 可执行权限,然后执行
root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# sudo apt-get install g++ #配置前请先安装g++,如已安装可忽略 root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# chmod +x autoconfigure.sh root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# ./autoconfigure.sh
配置脚本运行完成之后,就可以进行编译和安装了,大约需要十几到几十分钟:
root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# make -j4 root@zhengyang:/work/sambashare/tools/ qt-everywhere-opensource-src-5.0.0# make install
二、根文件系统制作
三、QT应用程序测试
参考文章
标签:qt,skip,GUI,work,Mini2440,linux,root,arm,QT6.5 From: https://www.cnblogs.com/zyly/p/17379338.html