QT5.12.1 ARM开发环境搭建 并 移植到RK3399 ubuntu16.04系统运行【完整版】
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系统运行【完整版】相关推荐
- 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 ...
- QT5.7.0 arm开发环境搭建
参考文章http://blog.csdn.net/singleroot/article/details/54344873 1.创建项目 创建一个c++项目,但是发现平台没有arm的平台,需要我们自己添 ...
- 关于FS4412的ARM开发环境搭建并点亮LED灯
目录 一.ARM开发环境搭建 1.安装 GCC 编译工具 2.安装 Yagarto 工具包 3.安装FS-JTAG调试软件 4.安装JRE 5.安装FS-JTAG驱动 6.安装USB转串口驱动 7.安 ...
- linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程
LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...
- 嵌入式LINUX搭建arm环境,手把手教你嵌入式ARM开发环境搭建
原标题:手把手教你嵌入式ARM开发环境搭建 1. 安装,配置,启动FTP服务 · 安装FTP: sudo apt-get install vsftpd · 修改vsftpd的配置文件/etc/vsft ...
- 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 ...
- Ubuntu16.04系统运行VINS-Mono(安装、环境配置)
Ubuntu16.04系统运行VINS-Mono 目录 一.Ubuntu16.04系统安装(基于VMware) 二.ROS Kinetic的安装 三.opencv3.3.1的安装 四.eigen3.3 ...
- OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建
之前有过对OpenCV3.4.2+VS2015编译及环境搭建,今天使用OpenCV3.4.3+QtCreator5.9.4编译及环境搭建.编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了 ...
- [ 物联网篇 ] 12 - 联发科MTK8516 开发环境搭建
联发科MTK8516开发平台主要面向智能语音助手设备(Voice Assistant Devices)和智能音响的系统设备.可以看到亚马逊的Echo和阿里巴巴的天猫精灵等等,出货量还是很大的. MT8 ...
- 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册
1)实验平台:正点原子RV1126 Linux开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692176265749 3)全套实验源码+手册+视频 ...
最新文章
- MicroPython支持的开发板:高性能、低成本创客首选
- sprintboot-learn(一)
- 中国顶级互联网公司的技术组织架构调整预示着什么?【强烈推荐行业人士阅读】
- C#中的Using的用法
- python上一行的代码打错了怎么办_写Python代码过程中碰到各种错误异常要怎么样去处理?...
- 程旭元系统漫画第三期:加班 !
- GitHub Trending第一之后,PaddleOCR再发大招:百度自研顶会SOTA算法正式开源!
- python123第四章第五题_Python123
- spring---aop(10)---Spring AOP中AspectJ
- 无盘服务器缓存,深入研究无盘服务器缓存
- 机械臂手眼标定原理及代码
- 基于SSM开发的的小区物业管理系统小程序源码
- 前端学习——页面布局
- 美团旅行数据质量监管平台实践
- [Error]The app delegate must implement the window property if it wants to use a main storyboard file
- 在正式使用计算机账务系统的银行对账功能,会计电算化账务处理系统中,银行对账的功能有哪些? 爱问知识人...
- 收藏学习测试论坛,网站
- 大数据技术之Hadoop(快速入门)
- VUE项目SEO问题的解决
- Unity 内置访问安卓权限
热门文章
- 国家级非遗传承人高清旺《四大美人》皮影数字藏品惊艳亮相!
- 向量的数量积和向量积
- 怎样保存html视频,网页上的视频怎么保存到电脑 网页视频保存到电脑的步骤教程...
- Cypress 自定义方法命令
- 转(解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法)...
- 手机里重力感应器和陀螺仪的区别
- 收集利用 Kotlin 进行 Android 开发的开源库,扩展,工具,开源项目,资料等高质量资源
- html计算梯形的面积,梯形的面积计算
- 申请 iOS开发者计划 (IOS Developer Program IDP)
- 【目录】pygame网络游戏教程