Qt的移植

520 阅读3分钟

QT的移植

本质上都是编译器,而gcc是linux系统用来将代码编译成可执行程序的手段。编译出来的是适用于linux系统的可执行二进制文件。所以用gcc编译出来的可执行程序只有在linux系统下面可以运行。

arm-linux-gcc告诉编译器,我编写的环境是linux,但是我希望生成的可执行程序是在arm上面跑的。这就是交叉编译。编写环境和执行环境分离的一种手段。

QT可以在LInux,android,x86和arm下跑起来,所以是十分强大的

Qt是开源的,所以可以从官网下载Qt源代码,使用交叉编译工具编译成目标平台(arm-linux)的库文件,将编译生成的库文件拷贝到开发板,并设置环境变量即可。

移植Qt和移植其他的Linux工具的方法没有区别

从ARM官网下载最新版交叉编译工具。

Arm GNU Toolchain | GNU Arm Embedded Toolchain Downloads – Arm Developer

gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2

Qt程序的移植

配置交叉编译环境

准备交叉编译工具 ------ 5.4.0

准备工作:安装gcc,g++和make:

sudo apt install build-essential     # GNU 编译器
安装交叉编译链
sudo apt-get install gcc-arm-linux-gnueabi

方法一(推荐) 1.使用管理员登录,将arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz压缩包传入Linux内,进行解压。

用分享文件的分享的方式导进来看看

 /mnt/hgfs
cp  arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz  

就可以看到分享进来的文件夹了

注意要用xvf解压

tar xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz  

然后终端输入:

arm-linux-gcc -v

image-20220731145146660

如果报错,则需要安装32位依赖库,

sudo apt-get install lib32z1

配置QQt-embeddedt的环境(这个会比较久)

mirrors.tuna.tsinghua.edu.cn/qt/archive/…

官网(推荐清华镜像)

download.qt.io/archive/qt/…

linux安装qt4.7.3

1、获得文件

qt-everywhere-opensource-src-4.7.3.tar.gz

2、解压缩

sudo bzip2 -d qt-embedded-linux-opensource-src-4.5.1.tar.bz2
tar xvf qt-x11-opensource-src-4.7.3.tar.gz

3、生成 makefile 文件

cd  qt-x11-opensource-src-4.7.3
./configure

这个时候他会问你:“Which edition of Qt do you want to use?” 然后给你两个类型供选择:

Type ‘‘c’’ if you want to use the Commercial Edition.
Type ‘‘o’’ if you want to use the Open Source Edition.

第一个是商业版,第二个是自由版。 选择 ‘‘o’’(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。 这时候,出现许可界面。 选择 ‘‘yes’’ 接受许可协议。 开始生成 makefile 文件。这个大约需要 5 -10 分钟的时间。 4、Qt 编译

make

这个过程时间比较长,需要两个小时左右。 5、Qt 安装 运行

 make install

默认安装至 /usr/local/Trolltech/Qt-4.7.3 大约 5 - 10 分钟。正常结束,安装完毕。 运行 /usr/local/Trolltech/Qt-4.7.3/bin/designer ,看见 qt 启动,也就是说 qt 安装好了。


image-20220731145157972

测试qmake是否可用

image-20220731145230140

起别名

~/.bashrc 

文件中添加一行(gedit)

alias armqmake='/usr/local/Qt-Embedded-5.7.0/bin/qmake'

重启终端支持armqmake命令

image-20220731145222510

移植Qt程序到开发板

1.将工程源代码目录拷贝到Ubuntu
2.在该目录下执行
    armqmake
    make
3.将生成的程序传送到开发板运行   

注:如果Ubuntu版本高于16.04,需要执行以下命令

sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4

image-20220731145241809


遇到的问题

make的时候遇到的