Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288

文章目录

一、需要准备的材料

二、操作步骤

1.更新软件源

2.安装环境依赖

3.搭建交叉编译环境

4.编译QT

5.安装Qt creator

6.配置Qt kit

三.测试


前言

本文使用VMware虚拟机作为Ubuntu系统载体,采用Ubuntu18.04-64位镜像作为QT编译环境,采用RK3288搭载Ubuntu18.04-arm-32作为QT执行环境。

一、需要准备的材料

① 交叉编译器:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

git:工具包: 一些常用的工具,你可以在这里找到

②qt-everywhere-src-5.9.5.tar.xz(QT源码)

网站:Index of /archive/qt/5.9/5.9.5/single

③qt-opensource-linux-x64-5.9.5.run(QT开发工具)

网站:Index of /archive/qt/5.9/5.9.5

二、操作步骤

1.更新软件源

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第1张图片

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第2张图片

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第3张图片

2.安装环境依赖

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools -y

sudo apt-get install device-tree-compiler gcc-aarch64-linux-gnu mtools parted -y

sudo apt-get install libudev-dev libusb-1.0-0-dev python-linaro-image-tools -y

sudo apt-get install linaro-image-tools autoconf autotools-dev libsigsegv2 m4 -y

sudo apt-get install intltool libdrm-dev curl sed make binutils build-essential gcc -y

sudo apt-get install g++ bash patch gzip bzip2 perl tar cpio python unzip rsync flex -y

sudo apt-get install bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev -y

sudo apt-get install libglade2-dev cvs git mercurial rsync openssh-client subversi -y

sudo apt-get install asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 -y

sudo apt-get install libssl-dev texinfo genext2fs -y

sudo apt-get install lib32stdc++6 -y

sudo apt-get install g++-arm-linux-gnueabihf -y

sudo apt-get install liblz4-tool lib32gcc-7-dev g++-7 libstdc++-7-dev -y

3.搭建交叉编译环境

①在/opt路径下创建gcc-arm-6.3.1文件夹来存放交叉编译器

cd /opt
sudo mkdir gcc-arm-6.3.1

②在交叉编译器存放的地方打开终端,将编译器复制到/opt/gcc-arm-6.3.1

mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz /opt/gcc-arm-6.3.1

在/opt/gcc-arm-6.3.1路径下进行解压

cd /opt/gcc-arm-6.3.1
sudo tar -xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz

④解压完成后会自动创建gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf文件夹,将此文件夹中的bin添加至.bashrc中。

在/home/XXX 下打开终端(XXX为你自己的用户)

vim .bashrc

按i,进入插入模式,在底部添加:export PATH=/opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:$PATH

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第4张图片

 更新环境变量

source .bashrc

查看是否生效:

arm-linux-gnueabihf-g++ -v 

如果可以查到,就代表安装成功。

4.编译QT

①在默认用户路径(/home/XXX)下解压QT源码

sudo tar -xvf qt-everywhere-src-5.9.5.tar.xz

②修改qmake配置文件,路径在/home/XXX/qt-everywhere-src-5.9.5/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

cd /home/XXX/qt-everywhere-src-5.9.5/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
vim 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                = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

QMAKE_CXX               = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

QMAKE_LINK              = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

QMAKE_LINK_SHLIB        = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs

QMAKE_OBJCOPY           = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy

QMAKE_NM                = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P

QMAKE_STRIP             = /opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip

load(qt_config)

③编译,/usr/local/qt-arm/QtEmbedded-6.3.1-arm 代表安装路径,文件夹需要提前创建出来

cd /usr/local
sudo mkdir qt-arm
cd qt-arm
sudo mkdir QtEmbedded-6.3.1-arm

在/home/XXX/qt-everywhere-opensource-src-5.9.5 路径下执行以下命令。

./configure -prefix /usr/local/qt-arm/QtEmbedded-6.3.1-arm -confirm-license -opensource -release -make libs -xplatform linux-arm-gnueabi-g++ -pch -qt-libjpeg -qt-libpng -qt-zlib -no-opengl -no-sse2 -no-openssl -no-cups -no-glib -dbus -no-xcb -no-separate-debug-info -no-iconv

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第5张图片

出现这个画面代表成功,可以进行下一步

make -j4 && sudo make install

此步骤花费时间较长请耐心等待。

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第6张图片

 出现这个画面代表成功

④导入环境变量,步骤和上面相同,导入完成后记得source下。

export QTDIR=/usr/local/qt-arm/QtEmbedded-6.3.1-arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第7张图片

 输入

qmake -version

如果能查到版本则代表成功。

5.安装Qt creator

①建立qtcreator的安装目录

cd /opt
sudo mkdir Qt5.9.5

②运行安装包

sudo chmod 777 qt-opensource-linux-x64-5.9.5.run
sudo ./qt-opensource-linux-x64-5.9.5.run

安装路径选择/opt/Qt5.9.5,按照下图勾选。

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第8张图片

 ③安装完成后,导入环境变量,方法和上面一样,记得导完后source下。

export PATH=/opt/Qt5.12.11/Tools/QtCreator/bin:$PATH
export PATH=/opt/Qt5.12.11/5.12.11/gcc_64/bin:$PATH

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第9张图片

 安装完成后就在菜单中找到Qt creator了。

6.配置Qt kit

①打开Qt creator,在菜单中选中tool下的option

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第10张图片

 ②点击Build&Run,选中compilers,选中Manual,分别添加C和C++,点击Add->GCC->C和C++,name自己取,路径选择

/opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc(C的路径)

/opt/gcc-arm-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++(C++的路径)

ABI选择arm-liunx,配置好后,点Apply。

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第11张图片

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第12张图片

 ③配置Qt Version,如果前面步骤没错的,会自己配置好,如果没配置好,按照图中路径选取qmake,完成后点Apply。

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第13张图片

 ④添加Kits,选中Manual点Add,名字自取,其他选中如同所示。

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第14张图片

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第15张图片

注:感叹号不影响。

三.测试

测试使用的是QT开源社区提供的开源串口工具。

下载地址:qcom-1.1.tar.gz_免费高速下载|百度网盘-分享无限制 (baidu.com)

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第16张图片

 在ubuntu-64位下能成功编译并运行,切换ARM-32后,点Rebuild All,注意不要点Run。

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第17张图片

 在项目文件夹中可以找到编译好的应用程序

Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288_第18张图片

 用file qcom可以查看应用程序版本和所依赖的库,如图可知已经编译为ARM-32位,注意运行应用程序需要目标机器中有相关的库。

 将文件夹移至基于RK3288的Ubuntu18.04-arm-32系统中,如图所示可以运行。

参考博客:(21条消息) ubuntu18.04 安装Qt交叉编译环境目标机为rk3288_风一样的航哥的博客-CSDN博客_gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu

你可能感兴趣的:(qt,ubuntu,arm开发)