QT5.12.1 ARM开发环境搭建 并 移植到RK3399 ubuntu16.04系统运行【完整版】

  • 一、搭建Qt ARM开发环境
  • 二、移植到RK3399 ubuntu16.04系统运行

一、搭建Qt ARM开发环境

1.虚拟机64位ubuntu16.04系统下QT的交叉编译,下载安装交叉编译器:aarch64-linux-gnu-gcc

  • aarch64-linux-gnu-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具,可用于交叉编译ARMv8 64位目标中的裸机程序、u-boot、Linux kernel、filesystem和App应用程序。aarch64-linux-gnu-gcc交叉编译器必须安装在64位主机上,才能编译目标代码。不能使用传统的arm-linux-交叉编译工具链,那些编译出来的都是32bit。
  • 官网下载:https://www.linaro.org/downloads/
  • !!!重要:因官网下载非常慢还会中途显示下载错误,我采用在ubuntu直接用命令的方式安装,若继续用这个官网的安装包的话,可参考这个博文,跳过接下来的安装步骤。

更新软件源和升级更新软件,输入如下指令

sudo apt-get update
sudo apt-get upgrade

接下来下载交叉编译工具aarch64-linux-gnu-gcc

查看哪些版本可以安装

sudo apt-cache search aarch64

(因时间等原因,大家的版本号有点差异,接下来的编译器版本号安装,要看清自己系统下有哪个版本编译器就安装对应的即可)

安装一个没有版本号的gcc-aarch64-linux-gnusudo

apt-get install gcc-aarch64-linux-gnu

安装一个gcc开头的5版本的支持64bit ARM linux的交叉编译工具

sudo apt-get install gcc-5-aarch64-linux-gnu

安装一个没有版本号的g++编译工具

sudo apt-get install g++-aarch64-linux-gnu

安装4.9版本号的g++编译工具

sudo apt-get install g++-4.9-aarch64-linux-gnu

安装好的编译器目录在/usr/bin

将/usr/bin目录添加到环境变量中,执行以下命令

sudo vi /etc/profile

在末尾添加如下内容:

export PATH="/usr/bin:$PATH"


输入命令,让环境变量生效

source /etc/profile

验证是否安装成功,查看里边的版本信息,里边有host是什么,target是什么

aarch64-linux-gnu-gcc -v

如下显示则安装成功

2.下载安装交叉编译qt库:qt-everywhere-src-5.12.1.tar.xz

  • 官网: http://download.qt.io/official_releases/qt/5.12/5.12.1/single/.
  • 百度云:qt-everywhere-src-5.12.1.tar.xz.
    提取码:zdwe

将下载的qt-everywhere-src-5.12.1.tar.xz压缩包复制到/usr/bin目录下,完成后输入命令

tar -xvf qt-everywhere-src-5.12.1.tar.xz

解压完成后进入获得的文件夹下

cd /usr/bin/qt-everywhere-src-5.12.1

接着输入命令

sudo vi qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf

增加以下内容(rk3399是armv8架构)

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

完整版如下:

#
# qmake configuration for building with aarch64-linux-gnu-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -ltsinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++# modifications to linux.conf
QMAKE_AR                = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip
load(qt_config)

保存后接着输入以下命令,仍在/usr/bin/qt-everywhere-src-5.12.1目录下

sudo vi auto.sh

新建的auto.sh为交叉编译自动配置脚本,在其中添加以下内容

#!/bin/sh
./configure \
-prefix /usr/bin/qt5.12.1-arm \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \

修改该文件权限并执行

sudo chmod 777 auto.sh
sudo ./auto.sh

编译成功会显示如下结果并生成Makefile文件

接着输入make进行编译,大概需要一个小时

sudo make -j4

编译完成后输入命令

sudo make install

大约一分钟后,可以看见/usr/bin目录下出现了我们指定的安装目录/usr/bin/qt5.12.1-arm,表示ARM Qt库安装成功

3.安装qt-opensource-linux-x64-5.12.0.run

  • 官网:http://download.qt.io/official_releases/qt/5.12/5.12.1/
  • 百度云:qt-opensource-linux-x64-5.12.0.run
    提取码:b6ic

以下为开发板安装qt需要的库:

sudo apt-get install libfontconfig1 libfontconfig1-devsudo apt-get install libxrender-dev libxrender1 libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libxkbcommon0  sudo apt-get install build-essentialsudo apt-get install libfreetype6 libfreetype6-dev

接下来安装qt软件

建立安装目录

sudo mkdir /usr/bin/Qt5.12.1

将下载的qt-opensource-linux-x64-5.12.0.run安装在/usr/bin/Qt5.12.1目录下,加上可执行权限后执行

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

跳过注册,如果没有skip选项,是因为你的ubuntu联网了,关闭网络后重新运行即可

/usr/bin/Qt5.12.1目录下安装

选择组件,我只选了第一个
其他默认安装即可。

安装完成后找到qt图标拖到ubuntu桌面

4.配置QtCreator
运行qt软件,点击菜单栏的工具->选项->Kits,在编译器栏中的编辑器添加我们前面安装的交叉编译工具,包括aarch64-linux-gnu-gcc与aarch64-linux-gnu-g++


接着点击Qt versions栏添加qmake,目录为交叉编译后安装的qt库目录

最后在构建套件栏目添加套件,如下图所示,包括名称、设备类型、编译工具、Qt版本等信息,如下图所示

配置完成后套件没有红色感叹号就ok了

二、移植到RK3399 ubuntu16.04系统运行

1.将交叉编译的Qt库复制到板子上

将/usr/bin/qt5.12.1-arm交叉编译Qt库通过u盘复制到rk3399的/usr/bin目录下

接着将qt程序运行所依赖的相关文件、配置等添加到环境变量中

vi /etc/profile

末尾添加:

export QTDIR=/usr/bin/qt5.12.1-arm
export LD_LIBRARY_PATH=/usr/bin/qt5.12.1-arm/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=/usr/share/fonts/truetype/ubuntu-font-family

最后一行字体配置可在你的开发板系统上查找有什么字体,自行配置

cd /usr/share/fonts/truetype
ls

如果在Firefly开发板上LD_LIBRARY_PATH如此操作可能还是不生效,可以在/etc/environment 末尾添加

vi /etc/environment
LD_LIBRARY_PATH=”/usr/bin/qt5.12.1-arm/lib:$LD_LIBRARY_PATH”

然后source /etc/profile或者重启板子让环境变量生效

2.新建qt工程和编译

新建工程的时候注意勾选arm套件,其他和正常操作即可

我的测试程序04_Demo效果是,执行程序后输出open,界面开启后有个close按钮,点击按钮会关闭窗口并输出close


测试程序完成后,点击左下角PC图标,选择arm套件编译

点击左下角锤子构建生成应用(编译不运行,因为这是交叉编译器编译出的qt,不能在linux平台运行,要在arm平台运行),输出框正常,编译完成

生成的可执行程序在你的工程目录下

3.移植qt可执行程序到rk3399运行

将04_Demo可执行程序通过u盘拷贝到rk3399开发板任意目录下,我的是/Work目录

在rk3399开发板的Ubuntu界面下按Ctrl+Alt+F1切换到字符界面(终端界面),找到qt所在路径输入su命令,切换到root权限后执行./04_Demo

运行程序后会弹出界面并打印信息

注:如果在ubuntu界面终端命令行执行Qt程序后可打印信息,不能显示界面,则按Ctrl+Alt+F1切换到字符界面命令行执行,界面就会出来,也不知道为什么
在开发板运行qt程序,界面不出来的问题折磨了我一个多星期终于解决了!!!

主要参考资料,感谢各位大神!
Linux下的Qt环境搭建(arm交叉编译).
RK3399 ARM QT开发环境搭建
Qt程序移植到Firefly开发板(Arm linux)下运行.
Qt源码编译configure配置参数.

在开发板Android系统运行Qt界面,可参考我另一篇博文:
Qt5.12.1 for RK3399 Android8.1配置

QT5.12.1 ARM开发环境搭建 并 移植到RK3399 ubuntu16.04系统运行【完整版】相关推荐

  1. QGC4.1.2二次开发(1)--Qt5.12.6 andorid开发环境搭建

    开发环境介绍: QGC版本: 4.1.2 Qt版本: 5.12.6(QGC要求) windows平台开发:vs2017 andorid平台: JDK Java SE 8u281        ando ...

  2. QT5.7.0 arm开发环境搭建

    参考文章http://blog.csdn.net/singleroot/article/details/54344873 1.创建项目 创建一个c++项目,但是发现平台没有arm的平台,需要我们自己添 ...

  3. 关于FS4412的ARM开发环境搭建并点亮LED灯

    目录 一.ARM开发环境搭建 1.安装 GCC 编译工具 2.安装 Yagarto 工具包 3.安装FS-JTAG调试软件 4.安装JRE 5.安装FS-JTAG驱动 6.安装USB转串口驱动 7.安 ...

  4. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程

    LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...

  5. 嵌入式LINUX搭建arm环境,手把手教你嵌入式ARM开发环境搭建

    原标题:手把手教你嵌入式ARM开发环境搭建 1. 安装,配置,启动FTP服务 · 安装FTP: sudo apt-get install vsftpd · 修改vsftpd的配置文件/etc/vsft ...

  6. Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤

    Qt | Qt For Android.Qt5.14.2安卓开发环境搭建详细步骤 目录 Qt | Qt For Android.Qt5.14.2安卓开发环境搭建详细步骤 1.简介 2.软件下载 1.J ...

  7. Ubuntu16.04系统运行VINS-Mono(安装、环境配置)

    Ubuntu16.04系统运行VINS-Mono 目录 一.Ubuntu16.04系统安装(基于VMware) 二.ROS Kinetic的安装 三.opencv3.3.1的安装 四.eigen3.3 ...

  8. OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建

    之前有过对OpenCV3.4.2+VS2015编译及环境搭建,今天使用OpenCV3.4.3+QtCreator5.9.4编译及环境搭建.编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了 ...

  9. [ 物联网篇 ] 12 - 联发科MTK8516 开发环境搭建

    联发科MTK8516开发平台主要面向智能语音助手设备(Voice Assistant Devices)和智能音响的系统设备.可以看到亚马逊的Echo和阿里巴巴的天猫精灵等等,出货量还是很大的. MT8 ...

  10. 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册

    1)实验平台:正点原子RV1126 Linux开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692176265749 3)全套实验源码+手册+视频 ...

最新文章

  1. MicroPython支持的开发板:高性能、低成本创客首选
  2. sprintboot-learn(一)
  3. 中国顶级互联网公司的技术组织架构调整预示着什么?【强烈推荐行业人士阅读】
  4. C#中的Using的用法
  5. python上一行的代码打错了怎么办_写Python代码过程中碰到各种错误异常要怎么样去处理?...
  6. 程旭元系统漫画第三期:加班 !
  7. GitHub Trending第一之后,PaddleOCR再发大招:百度自研顶会SOTA算法正式开源!
  8. python123第四章第五题_Python123
  9. spring---aop(10)---Spring AOP中AspectJ
  10. 无盘服务器缓存,深入研究无盘服务器缓存
  11. 机械臂手眼标定原理及代码
  12. 基于SSM开发的的小区物业管理系统小程序源码
  13. 前端学习——页面布局
  14. 美团旅行数据质量监管平台实践
  15. [Error]The app delegate must implement the window property if it wants to use a main storyboard file
  16. 在正式使用计算机账务系统的银行对账功能,会计电算化账务处理系统中,银行对账的功能有哪些? 爱问知识人...
  17. 收藏学习测试论坛,网站
  18. 大数据技术之Hadoop(快速入门)
  19. VUE项目SEO问题的解决
  20. Unity 内置访问安卓权限

热门文章

  1. 国家级非遗传承人高清旺《四大美人》皮影数字藏品惊艳亮相!
  2. 向量的数量积和向量积
  3. 怎样保存html视频,网页上的视频怎么保存到电脑 网页视频保存到电脑的步骤教程...
  4. Cypress 自定义方法命令
  5. 转(解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法)...
  6. 手机里重力感应器和陀螺仪的区别
  7. 收集利用 Kotlin 进行 Android 开发的开源库,扩展,工具,开源项目,资料等高质量资源
  8. html计算梯形的面积,梯形的面积计算
  9. 申请 iOS开发者计划 (IOS Developer Program IDP)
  10. 【目录】pygame网络游戏教程