Linux编译移植Qt5的环境_OMAPL138平台
Linux编译移植Qt5_OMAPL138
【导语】:昨天编译Qt5各种失败,各种离奇的错误在Google上面也搜索不到,真是让人“蛋疼菊紧”,今天把所有的环境全部清理干净,也重新解压了Qt5.1.1的源码包,重新走了一遍,效果还可以,也没有出现PDA LTS什么库问题,现在整理一下详细过程和细节点。
另外说一下,我使用Qt5.8.0的源码包进行编译,我的OMAPL138的ARM9架构,在configure阶段就提示我your platform arch too old. 意思就是我的平台的架构太老了,所以如果在ARM9的架构上面编译Qt5,选择一个稍微老一点的版本。我这里选择Qt5.1.1
**再补充一点:如果在曾经执行过./configure这个命令了,如果出了问题进行修正,最好把这个源码包删除,重新解压一个源码包,说不定哪个配置属性就影响了后续的操作,我之前就是总在这个里,以为每次./configure都是重新配置,然而并不是这样。 **
编译Qt5.1.1
1 准备工作
- Qt5.1.1的开源源码包:官方下载地址:qt-everywhere-opensource-src-5.1.1.tar.gz
- 交叉编译环境:(只适合OMAPL138)链接: https://pan.baidu.com/s/1sl9NuPn 密码: g4m8
2 配置源码文件
下载qt-everywhere-opensource-src-5.1.1.tar.gz的解压,并且切换到这个目录。开始配置信息,我这里有配置好的文件,(链接: https://pan.baidu.com/s/1qYPyAoW 密码: 8eey)这个文件包含一个配置信息的run.sh脚本,和linux-arago-gnueabi-g++的架构信息文件夹。
把linux-arago-gnueabi-g++架构文件夹拷贝到./qtbase/mkspec文件夹里面,然后我们修改这个文件夹里面的qmake.conf文件,在程序内标定注意事项:
- QMAKE_CC等编译器使用的是绝对路径。
- QMAKE_CFLAGS_RELEASE 这里需要写好你目标板子的架构信息(可以在终端运行
arch命令查看) - include路径看看其他架构文件夹里面的qmake.conf如何指定,可能不同版本稍有不同。
#
# qmake configuration for building with arm-arago-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
#Compiler Flags to take advantage of the ARM architecture
#Run the linux terminal command "arch" to see the detail your target cpu arch information.
QMAKE_CFLAGS_RELEASE += -O3 -march=armv5te
QMAKE_CXXFLAGS_RELEASE += -O3 -march=armv5te
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-gcc
QMAKE_CXX = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
QMAKE_LINK = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-objcopy
QMAKE_NM = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-nm -P
QMAKE_STRIP = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-strip
load(qt_config)
再来看run.sh的配置信息(注意给定run.sh chmod 777 权限)注意几个关键点:
- -prefix :指定make install之后的安装路径。
- -xplatform :注意是开头字母是x 还有platform,如果少了x会报错说:/usr/bin/ld: .libs/dev2gif.o: Relocations in generic ELF (EM: 40)
- -xplatform 后面指定我们上面定义的架构信息文件夹。
#!/bin/sh
./configure \
-v \
-prefix /home/delvis/work/qt5.1.1 \
-release \
-opensource \
-no-accessibility \
-xplatform linux-arago-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-pkg-config \
-nomake examples \
-lrt \
-no-separate-debug-info
执行sudo ./run.sh然后让它完成配置。
sudo make -j4 开始编译,编译的过程不可能是一帆风顺的,总会会出现各种的错误,自己找找错误解决吧
sudo make install之后进入我们-prefix的路径考培就好了。
拷贝文件到目标板并配置环境
1)传输Qt5.1.1到开发板
就是把我们刚才编译的环境拷贝到我们的目标板的目录下,可以使用FTP,可以使用OTG挂在U盘的方式,我喜欢使用SSH协议的scp命令。
sudo scp -r /home/delvis/work/qt5.1.1 root@192.168.2.103:/opt 输入密码之后就可以把整个文件夹传输到开发板上面了。
2) 配置开发板的环境
我们传输完毕之后,则需要在开发板上设定环境,当我们运行qt程序的时候才能寻找到这些Qt库文件。
打开
vi /etc/profile
增加以下,需要注意的是QT_ROOT,写对Qt的路径,还有TSLIB_ROOT编译的是tslib的路径。
export TSLIB_ROOT=/opt/tslib1.4
export QT_ROOT=/opt/qt5.1.1
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
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
完成配置。
3)测试
我们利用Qt Creator制作一个简单的界面,然后编译出可执行文件,讲可执行文件传输到目标板子上面执行,我们的可执行程序叫做TestEM,需要qws参数。
./TestEM -qws
然后就可以看见界面了。

参考文献:
[0] Carlos Wei著,Linux编译Qt4的环境_OMAPL138. CNBLOGS
[1] leocloud著 QT5.7交叉编译安装到arm. CSDN博客.
[2] 灿哥哥著. Qt5.7.0配置选项(configure options). CSDN博客.
[3] BigSam78. ARM 指令集版本和ARM 版本. 新浪博客.
版权声明:
1. 本文为MULTIBEANS团队研发跟随文章,未经允许不得转载。
2· 文中涉及的内容若有侵权行为,请与本人联系,本人会及时删除。
3· 尊重成果,本文将用的参考文献全部给出,向无私的工程师,爱好者致敬。
Linux编译移植Qt5的环境_OMAPL138平台的更多相关文章
- Linux编译移植Qt5的环境_Xillinx的ZYNQ平台
Linux编译Qt环境 2017年的十一假期,足不出户,一个人在教研室里面搞Qt的移植.我手里面有Samsung的CortexA8,Samsung的 CortexA53还有Ti的Sitara系列的AM ...
- Linux编译移植Qt4的环境_在OMAPL138平台
Linux编译Qt4的环境_OMAPL138 手里有一块创龙OMAPL138的板子,我要在上面成功移植Qt环境和触摸屏幕,这是我第二次进行Linux的Qt环境移植,发现了很多问题,需要重新整理. 我编 ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- 二、linux编译环境的搭建
1.linux编译工具安装 vim安装:apt-get install vim 注意:使用C语言源代码语法加亮功能,需要配置文件/etc/vim/vimrc,加入代码syntaxon.文件后缀必须为. ...
- Linux学习 : 移植qt 5.6.3 及 tslib 1.4
(一) 移植 qt5.6.3 一.qt简介: Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具 ...
- jz2440移植QT5.6【学习笔记】【原创】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 交叉编译工具:arm-linux-gcc (GCC)4.4.3 linux:linu3.4.2 PC环境:ubuntu18.04 一.修改/o ...
- 移植mysql到嵌入式ARM平台
移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.p ...
- 将Linux代码移植到Windows的简单方法
一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的.Windows平台根本无法直接利用这些源代码资源.如果想要使用完整的代码,就要做移植工作.因为C/C ...
- 移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)
目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for w ...
随机推荐
- 【转】dB的计算方法
原文地址:https://www.espressif.com/zh-hans/media/blog/%E5%A2%9E%E7%9B%8A%E6%AF%94%E5%80%BC-db-%E4%BB%A5% ...
- python中文入库
http://www.cnblogs.com/evening/archive/2012/04/19/2457440.html 工作需要,将cvm.csv文件中的记录志入数据库, name, owner ...
- 模拟精灵 z
反复做历史测试,重大改进了卖出的判断模式.此项改进能使系统收益每年增加5%-左右 重新整合了几种买法,使之在熊市更加谨慎.对大盘的反转反应更为灵敏 适当加大了仓位 单独处理有重大机会的股票 加入多种短 ...
- March 5 2017 Week 10 Sunday
If you do what you love, you will never work a day in your life. 做你所爱的事情,你就不会觉得是在工作. Today, one mach ...
- 如何在SAP CRM里创建和消费Web service
Created by Wang, Jerry, last modified on Dec 19, 2014 The following steps demonstrates how to expose ...
- 从头基于空镜像scratch创建一个新的Docker镜像
我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...
- QT学习之窗口右键菜单
#QT学习之窗口右键菜单 QWidget 及其子类都有右键菜单,主要因为其有两个与右键菜单相关联的函数: Qt::ContextMenuPolicy contextMenuPlicy() const ...
- TSP 遗传算法
GA——遗传算法 同模拟退火算法一样,都是现代优化算法之一.模拟退火是在一定接受程度的情况下仍然接受一个比较差的解. 遗传算法,是真真正正的和大自然的遗传进化有着非常紧密的联系的,当然遗传进化的只是在 ...
- 【转】Activity、Window、View的关系
1.先看一个现象 1 2 3 4 5 6 7 8 9 10 11 public class MainActivity extends Activity { @Override pr ...
- js CheckBox只读
checkbox没有readOnly属性 所以我们要设置CHeckbox是只读的话就要设置其onclick方法并返回false checkbox.onclick=function(){return f ...