1.虚拟机64位ubuntu16.04系统下QT的交叉编译,下载安装交叉编译器:aarch64-linux-gnu-gcc
更新软件源和升级更新软件,输入如下指令
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
将下载的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 = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
include(../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
以下为开发板安装qt需要的库:
sudo apt-get install libfontconfig1 libfontconfig1-dev
sudo apt-get install libxrender-dev libxrender1 libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libxkbcommon0
sudo apt-get install build-essential
sudo 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了
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配置
文章浏览阅读119次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼/***Getaparametervalue**@paramkeyString*@paramdefString*@returnString*/publicStringgetParameter(Stringkey,Stringdef){returnisStandalone?System.getProperty(ke..._java http隧道
文章浏览阅读913次。IP主机名备注192.168.117.14keepalived-master主节点192.168.117.15keepalived-slaver备节点192.168.117.100VIP1.主备节点均安装keepalived# yum install -y keepalived httpd2.主备节点均修改keepalived日志存放路径..._keepalived sendmail
文章浏览阅读469次。--==========================================--SPFILE错误导致数据库无法启动(ORA-01565)--========================================== SPFILE错误导致数据库无法启动 SQL> startup ORA-01078: failurein proce_ora01565 ora27046
文章浏览阅读6.1k次,点赞2次,收藏54次。功能测试基础知识总结_功能测试
文章浏览阅读3.2k次,点赞3次,收藏2次。pg 中文首字母排序_pg中文排序
文章浏览阅读3.1w次,点赞23次,收藏109次。本文主要讲解CONVERT函数_mysql convert
文章浏览阅读8.6k次,点赞2次,收藏2次。HTML5 的视频播放事件想必大家已经期待很久了吧,在HTML4.1、4.0之前我们如果在网页上播放视频无外乎两种方法: 第一种:安装FLASH插件或者微软发布的插件 第二种:在本地安装播放器,在线播放组件之类的 因为并不是所有的浏览器都安装了FLASH插件,就算安装也不一定所有的都能安装成功。像苹果系统就是默认禁用FLASH的,安卓虽然一开始的时候支持FLASH,但是在安卓4.0以后也开始不_微信开发者工具视频快进
文章浏览阅读5.4k次,点赞3次,收藏4次。在使用redis的过程常见错误总结1.JedisConnectionException Connection Reset参考这边文章:Connection reset原因分析和解决方案https://blog.csdn.net/cwclw/article/details/527971311.1问题描述Exception in thread "main" redis.clients...._jedisconnectionexception: java.net.socketexception: connection reset
文章浏览阅读8.3k次,点赞8次,收藏42次。目录1.Lua垃圾回收算法原理简述2.Lua垃圾回收中的三种颜色3.Lua垃圾回收详细过程4.步骤源码详解4.1新建对象阶段4.2触发条件4.3 GC函数状态机4.4标记阶段4.5清除阶段5.总结参考资料lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前..._lua5.3 gc
文章浏览阅读511次。最近家中的潮人,老妈闲着没事干,开始学玩电脑,引起他的各种好奇心。如看看新闻,上上微信或做做其他的事情。但意料之中的是电脑上会莫名出现各种问题?不翼而飞的图标?照片又不见了?文件被删了,卡机或者黑屏,无声音了,等等问题。常常让她束手无策,求助于我,可惜在电话中说不清,往往只能苦等我回家后才能解决,那种开心乐趣一下子消失了。想想,这样也不是办法啊, 于是,我潜心寻找了两款优秀的远程控制软件。两款软件...
文章浏览阅读1.8k次。二.初始化工作空间三.设置下载地址四.下载功能包此处可能会报错,请看:rosdep update遇到ERROR: error loading sources list: The read operation timed out问题_DD᭄ꦿng的博客-程序员宅基地接下来一次安装所有功能包,注意对应ROS版本 五.编译功能包isolated:单独编译各个功能包,每个功能包之间不产生依赖。编译过程时间比较长,可能需要几分钟时间。此处可能会报错:缺少absl依赖包_ros18.04 安装ca
文章浏览阅读4.1k次,点赞3次,收藏7次。Haobor2.2.1配置(trivy扫描器、镜像签名)docker-compose下载https://github.com/docker/compose/releases安装cp docker-compose /usr/local/binchmod +x /usr/local/bin/docker-composeharbor下载https://github.com/goharbor/harbor/releases解压tar xf xxx.tgx配置harbor根下建立:mkd_init error: db error: failed to download vulnerability db: database download