_未完成;交叉编译QT5.9安装到嵌入式arm板子上

ref:https://blog.csdn.net/u012175418/article/details/52704734


平台    :Ubuntu 18.04

QT版本    :5.9.1 (open source)

g++     : 7.3.0
arm-gcc   :4.8.1

arm-board  :Linux 3.4  for  s5p6818

以下采用的系统为ubuntu16.04,开发板为迅为iTOP4412,4.3寸屏。
下载qt5.7源码qt-everywhere-opensource-src-5.7.0.tar.xz
http://www.download3k.com/Install-Qt.html

下载ARM交叉编译工具arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
http://www.veryarm.com/arm-none-linux-gnueabi-gcc

下载tslib1.4
http://vdisk.weibo.com/s/AcUHxOERV2k0?sudaref=www.baidu.com

arm交叉编译器arm-2014的安装

将“arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2”解压到Ubuntu 系统的文件夹“/usr/local/arm”中。
然后修改环境变量,切换到home目录,然后输入命令“vim .bashrc”,打开设置环境变量的文件“.bashrc”,将环境变量修改为“export PATH=$PATH:/usr/local/arm/arm-2014.05/bin”
保存退出,然后更新一下环境变量,输入命令“source .bashrc”。

source .bashrc
  • 1

接着测试一下,编译器路径设置的对不对。如下图,在Ubuntu 命令行中输入命令”arm”,
然后按键盘”Tab”,出现编译器“arm-none-linux-gnueabi-gcc-4.8.2”,这就说明编译
器路径设置正确。

交叉编译tslib1.4

对触摸屏信号的获取、校正、滤波处理,均采用开源的tslib,本文采用的tslib版本为最新的tslib1.4(可以从本文提供的链接中下载tslib1.4)。
1.将下载好的tslib1.4拷贝到/home/lz/transplant目录下(可以根据自己的系统选择某一目录),然后执行解压缩命令

tar -vxf tslib-1.4.tar.gz

切换到tslib目录:

cd tslib

安装交叉编译tslib必须的一些工具(可以先查看是否已安装,ubuntu16.04自带这些工具,可跳过)

sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

2.利用脚本写编译过程
在tslib文件夹下新建文件configTslib14.sh

vi configTslib14.sh

内容如下:

#!/bin/sh
make clean && make distclean
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/tslib1.4 --cache-file=arm-linux.cache
make && make install

然后运行configTslib14.sh

./configTslib14.sh

执行结束后,我们查看一下是否安装成功,执行命令:

ls /opt/tslib1.4

如果出现bin,etc,include,lib这4个目录,如下图所示,说明交叉编译并安装tslib成功。

交叉编译QT5.7.0

将下载的qt-everywhere-opensource-src-5.7.0.tar.gz执行如下命令解压:

tar -vxf qt-everywhere-opensource-src-5.7.0.tar.gz
cd qt-everywhere-opensource-src-5.7.0

修改交叉编译架构用到的信息:

gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

修改如下图所示:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = arm-none-linux-gnueabi-gcc
QMAKE_CXX               = arm-none-linux-gnueabi-g++
QMAKE_LINK              = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
QMAKE_NM                = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-none-linux-gnueabi-strip
load(qt_config)

创建一个脚本文件,用于生成Makefile,执行命令

gedit autoConfigure.sh

输入下面内容并保存:

#!/bin/sh
./configure -v -prefix /opt/qt-5.7.0 -release -opensource -no-accessibility
-make libs -xplatform linux-arm-gnueabi-g++ -optimized-qmake -pch -qt-sql-sqlite -qt-zlib -tslib -no-opengl -no-sse2 -no-openssl -no-nis -no-cups -no-glib -no-pkg-config -no-separate-debug-info -I/opt/tslib1.4/include -L/opt/tslib1.4/lib

其中-prefix /opt/qt-5.7.0代表我们编译完QT5.4.1后要安装地址;-tslib代表QT对触摸板的支持,-I 和 -L后面分别为为第一步编译tslib的include和lib的安装目录。
执行命令:

chmod 777 qt.configure.sh
./autoConfigure.sh

上述命令自动生成Makefile文件。
执行命令启动编译:

make
  • 1

编译大概2个小时。
编译结束后,执行安装命令:

sudo make install

我们切换到目标目录下看看是否安装成功:

cd /opt/qt-5.7.0
ls

如图所示:

将/opt/qt-5.7.0和/opt/tslib1.4 拷贝到开发板的文件系统中对应的目录中。

设置QT的交叉编译环境

安装qtcreator
进入qtcreator开发环境
在菜单中选择Tools——Options,在弹出的对话框中,选择Build & Run,选择标签Compilers,按下图设置,选择C++交叉编译器,如下图所示:

切换到Qt Versions标签,点击“Add”按钮,选择qmake,如图所示:

选择完成,按“OK”按钮,设置如图所示:
切换到Kits标签,点击“Add”按钮,然后设置如下图所示:

在4412开发板上配置tslib并交叉编译一个能够在4412开发板上运行的QT应用程序

把字库Ubuntu_L.ttf 等字库拷贝到 /opt/qt-5.7.0/lib/fonts

在开发板串口命令窗口中输入:

vi /etc/profile

如下图所示:

将其修改为以下内容

export TSLIB_ROOT=/opt/tslib1.4
export QT_ROOT=/opt/qt-5.7.0
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_ROOT/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib

保存退出,执行命令(一定要执行,否则可能报错):

source /etc/profile

然后在串口命令窗中输入 vi /opt/tslib1.4/etc/ts.conf 来配置触摸屏

把第二行的注释去掉,把ts设置成输入模式(注意把前面的空格也去掉)

下面编写测试程序来测试开发板上
打开qtcreator,新建项目,拖几个按钮上去,如下图所示

编译得到可执行程序untitled,查看一下,可以看到其信息显示为arm平台,如下图所示

将untitled拷贝到开发板中文件系统的/bin目录,运行该程序。

[root@iTOP-4412]# /bin/untitled 

看一下板子:

原文地址:https://www.cnblogs.com/schips/p/11089135.html

时间: 2024-08-26 22:39:09

_未完成;交叉编译QT5.9安装到嵌入式arm板子上的相关文章

安装openssh 到 am5728 板子上

注意:目录不要放到虚拟机与windows的共享目录. 准备 虚拟机上进到目录 /home/llf/ssh 创建目录:zlib.install 和 openssl.install $ cd ssh                                      # 进入 ssh 目录  $ mkdir zlib.install                      # 新建 zlib 安装目录,移植过程 zlib 镜像会安装到该目录$ mkdir openssl.install   

交叉编译Python至嵌入式arm(支持import sqlite3,datetime等)-----Cross Compiling Python for Embedded Linux

这是求毕业哥的处女座博客,希望大家别喷!!! 由于实验室项目的需要,求毕业哥于昨晚(2014/11/05)9点开始学习Python.自身有点强迫症,装什么软件都要求新的,所以给自己Windows装了个Python3.3(也为自己埋了个雷).之前在Linux机器上装了Python-2.7.3,我没多想,以为Python高级版是向下兼容的.于是就开始了求毕业哥的踩雷之路...raw_input(),``,socket通信...总之各种版本间不兼容啊!!! 言归正传,求毕业哥(以下简称,求毕业)的实验

交叉编译工具的安装及问题解决

一.交叉编译工具链的常识 所谓"交叉编译",就是在A机器上用交叉编译命,生成的文件可以运行在B机器上. 二.交叉编译工具链的安装  步骤: 1. 下载交叉编译工具包,如:arm-cortex_a8-linux-gnueabi.tar.bz2: 2.  复制交叉编译工具包到/home/joki/workdir/s5pc100/ 目录下,(目录随意定,最好放在用户目录下,不用考虑权限的问题) 3.  解压缩该工具包到当前目录下,解压后的目录为arm-cortex_a8,进入该命令目录bin

北京快_三源码出售安装、配置、常用命令

在北京快_三源码出售 Q1446595067 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常.报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务. 所以,就需要一个工具,时刻监控 web 应用的运行情况,管理该进程. Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能.简介 Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动.

CI_CD(jenkins)公司实战_未完成版

环境准备 #三台服务器,不同的ip centos   镜像时:CentOS Linux release 7.6.1810 (Core) gitlab-ce 版本是:11.11.3 jenkins   版本是:2.176.1 nginx     版本是:1.12.2 git       版本是:2.21.0 mysql     版本是:5.6.44 MySQL Community Server (GPL) #在这三台服务器上,自己选定那个服务器安装哪个软件,安装好软件,并设置为开机自启动,启动.

qt5.3.2移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错

qt5.3.2移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错.解决办法如下, 使用工具:GCC4.4.1 QT源码:qt5.3.2 前提是确保你的工具已经安装成功了. 解决:1.下载gcc源码:我用的4.4.1解压,在gcc-4.4.3/gcc/config/arm/目录下找到一个linux-atomic.c:2.制作链接库:使用libtool制作,输入命令 libtool --tag=CC --mode=compile arm-

嵌入式ARM的学习方法下

因为有的人打着嵌入式硬件工程师的名号装逼,其实嵌入式硬件就是普通硬件工程师做的工作.我们这里都是讨论软件方面的内容,而且嵌入式是以软件为主导的(工资上有较大差距).如果对硬件感兴趣的,可以参看博客<如何学习硬件设计--理论篇>和<如何学习硬件设计--实践篇>,这里不要求掌握硬件,有一定程度的了解即可. 一.增强理论知识 1.单片机.具体的学习路线请参考博客文章<如何学习单片机>.不想学单片机的话,可以学计算机组成原理. 2.数据结构.主要掌握表和树,其中链表会在操作系统

嵌入式ARM的学习方法上

嵌入式分为广义和狭义两种.广义的嵌入式就是片上系统(system on a chip),包括单片机.PSOC.NIOS.Microblaze等.而狭义的嵌入式就是ARM9.cortex A8等特定的跑操作系统的芯片.这里主要介绍狭义嵌入式的学习路线嵌入式ARM的学习方法. 还是主流的方法,先学会使用它,再深入研究底层. 常用的操作系统有Linux.WIN CE.安卓.Vxworks.QNX.OSE等,目前资料最多的是linux,所以下面以linux为例. 一.安装虚拟机和linux系统 一般人用

XE6 &amp; IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相)

XE6 & IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相) 2014-08-27 20:51 网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 1.既然我们已经在真机上运行过App了,那么现在就来生成一下.--------------------------------------------------------------- 1.在虚拟机下,点一下桌面(星空图随便某个地方),在F