嵌入式开发之qt-4.8.6移植

目录

前言

一、下载qt-4.8.6

二、一键编译

 三、移植到目标机

3.1 文件移植

3.2 配置环境变量

3.3 添加库文件

  四、测试

4.1 安装和配置qt-creator

4.2 创建并执行测试demo

总结


前言

QT是一个跨平台的 C++图形用户界面库,具有丰富的API、良好封装机制和优良的跨平台特性,且在遵守GPL、LGPL前提下可以免费使用,深受嵌入式开发程序员所喜爱。

本次移植qt4.8.6的软硬件环境环境如下:

主机环境:Ubuntu 18.04.4 LTS

编译环境:arm-linux-gcc-4.3.2

开发工具:qt-creator-4.12.0

目标机:飞凌-OK6410-A

目标机内核:linux 3.0.1


一、下载qt-4.8.6

进入QT官网,下载qt4.8.6源文件包,地址:https://download.qt.io/archive/qt/4.8/4.8.6/,得到源文件包qt-everywhere-opensource-src-4.8.6.tar.gz。

二、一键编译

编写一键编译脚本build-qt.sh,代码如下:

#!/bin/bash

# Configure the environment variables
export PATH=/usr/local/arm/4.3.2/bin:$PATH
export TOOLCHAIN=/usr/local/arm/4.3.2
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
export TB_CC_PREFIX=arm-linux-

# Unzip the source package
rm -rf qt-everywhere-opensource-src-4.8.6
tar xfvz qt-everywhere-opensource-src-4.8.6.tar.gz
cd qt-everywhere-opensource-src-4.8.6

# based on x86 architecture (Output to directory /opt/qtenv/qt-4.8.6-x86)
#echo yes | ./configure -prefix /opt/qtenv/qt-4.8.6-x86 -opensource -no-webkit -qt-libtiff -qt-libmng  -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp  -I /usr/local/tslib/include -L /usr/local/tslib/lib

# based on arm architecture (Output to directory /opt/qtenv/qt-4.8.6-arm)
echo yes | ./configure -prefix /opt/qtenv/qt-4.8.6-arm -opensource -confirm-license -embedded arm -xplatform qws/linux-arm-g++ -little-endian -host-little-endian -shared -no-qt3support -no-phonon -no-phonon-backend -qt-zlib -no-gif -no-libtiff -no-qvfb -qt-libjpeg -no-nis -no-opengl -no-cups -no-webkit -no-glib -no-dbus -no-rpath -no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-neon -no-audio-backend -no-svg -no-javascript-jit -no-script -no-scripttools -no-multimedia -no-openssl -nomake tools

# Compilation and installation
make 2>&1 | tee ../qte-4.8.6-Makelog
make install

编译完成后,在/opt/qtenv目录下生成qt-4.8.6-arm,ls查看文件夹的内容,如下图:

root@ubuntu:~/tool/qt/qt-opensource-src# ls /opt/qtenv/qt-4.8.6-arm/ -all
total 40
drwxr-xr-x  10 root root 4096 Jun  4 19:19 .
drwxr-xr-x   4 root root 4096 Jun  4 18:47 ..
drwxr-xr-x   2 root root 4096 Jun  4 19:19 bin
drwxr-xr-x  18 root root 4096 Jun  4 19:19 demos
drwxr-xr-x  28 root root 4096 Jun  4 19:19 examples
drwxr-xr-x   9 root root 4096 Jun  4 19:18 include
drwxr-xr-x   4 root root 4096 Jun  4 19:18 lib
drwxr-xr-x 109 root root 4096 Jun  4 19:19 mkspecs
drwxr-xr-x   7 root root 4096 Jun  4 19:18 plugins
drwxr-xr-x   2 root root 4096 Jun  4 19:18 translations

 三、移植到目标机

3.1 文件移植

将qt-4.8.6-arm文件夹复制到目标机的/usr/local下,将目标机的qt-4.8.6-arm重命名为qt-4.8.6。

3.2 配置环境变量

打开文件/etc/profile,添加qt配置信息,如下图:

export QTDIR=/usr/local/qt-4.8.6
export QPEDIR=$QTDIR
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export QT_PLUGIN_PATH=/usr/local/qt-4.8.6/lib
export QT_QWS_FONTDIR=/usr/local/qt-4.8.6/lib/fonts
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib

3.3 添加库文件

到交叉编译器的库里找到相应的库(libstdc++和libpng),复制到开发板lib库目录下,如下图:

cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6 /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12 /rootfs/lib/ 

cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libpng.so /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libpng.so.3 /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libpng.so.3.35.0 /rootfs/lib/ 

  四、测试

4.1 安装和配置qt-creator

下载qt-creator-opensource-linux-x86_64-4.12.0.run,并Ubuntu 18.04.4上完成安装,同时,需要配置好qt-creator-4.12.0的编译环境,如下图:

嵌入式开发之qt-4.8.6移植_第1张图片

嵌入式开发之qt-4.8.6移植_第2张图片

嵌入式开发之qt-4.8.6移植_第3张图片

4.2 创建并执行测试demo

使用qt-creator创建一个基于QWidget的应用程序,默认命名为untitled,交叉编译后,移植到目标机并执行,如下图:

./untitled -qws

在目标机的屏幕上将出现untitled的运行结果,如下图:

嵌入式开发之qt-4.8.6移植_第4张图片


总结

本文的关键是制作好“一键编译脚本”和“配置qt-creator交叉编译环境”,文件系统上如果缺少库文件,需要使用busybox编译出文件系统所需要的库。

你可能感兴趣的:(linux驱动开发,qt开发,arm,qt)