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=armv5teinclude(../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平台相关推荐

  1. LINUX QT移植到ARM (zynq平台 qt5.4.1)

    LINUX QT移植到ARM (zynq平台 qt5.4.1) 1.安装tslib 2.安装QT5.4.1 2.1下载QT5.4.1 2.2解压 2.3修改配置文件替换自己的编译器 2.4配置 2.4 ...

  2. Linux编译安装qt5.9,Linux CentOS7 安装 Qt 5.9.2

    Linux CentOS7 安装 Qt 5.9.2 参考链接 http://doc.qt.io/qt-5/linux.html sudo yum groupinstall "C Develo ...

  3. openssh arm linux 编译,移植openssh到arm linux

    一.在移植之前需要准备做一些前期准备: 1.移植zlib库 1.1获取zlib源码 1.2解压 tar xvf zlib-1.2.11.tar.xz 1.3交叉编译 1.3.1 指定交叉编译器 exp ...

  4. linux编译ace tao,CentOS环境下ACE编译指南

    CentOS环境下ACE编译指南 1.环境说明: (1)CentOS6.3 (2) ACE6.10 2.编译步骤: (1)定义环境变量: ACE_ROOT=/root/work/cots/ACE_wr ...

  5. linux编译源码问题 环境变量的设置

    本来想安装一个gkrellm-2.3.2,解压进去后,执行./configure,出现这个情况.如图1 大概的意思是gtk+-2.0未安装吧.然后我下载了一个gtk+-2.0,执行./configur ...

  6. linux node gyp 编译,node gyp编译所需要的环境

    gyp编译工具 最近用到了 node-gyp 这个工具, 是node 社区对 google gyp 编译工具的一个封装, 使用 node-gyp 工具可以用C++为node 项目编写 addon. 了 ...

  7. 编译移植龙芯2K1000平台下的qt-5.13

    编译移植龙芯2K1000平台下的qt-5.13 本文记录对龙芯2K进行qt5.13.1版本的移植. 本文中对于tslib的安装不做讲解,使用了QT4进行核心板开发的童鞋一般情况下,应该已经安装好了ts ...

  8. tar在linux编译为exe,将Linux代码移植到Windows的简单方法 1

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的.Windows平台根本无法直接利用这些源代码资源.如果 ...

  9. linux下将QT移植至arm环境

    前言 讲下整个项目流程,我们的目标是把qt编出来程序放在arm开发板上面跑,首先下载QT源码和tslib源码(QT源码编译和QT程序运行需要tslib库的支持),在虚拟机里使用交叉编译将QT源码编译安 ...

  10. zynq linux环境移植,ZYNQ 7030 Linux 系统移植

    ZYNQ 7030 Linux系统移植 手上有一块 ZYNQ-7030的演示板,是仿照Xilinx Zedboard设计的,但是与Zedboard又有所不同,因此花时间移植一下Linux系统.记录下这 ...

最新文章

  1. squid rebuild 阶段swap.state 持续增大耗尽磁盘
  2. Rancher Labs赋能合作伙伴抢滩容器市场
  3. android 启动另外一个activity,起动另外一个activity只能在activity里面启动吗
  4. 87-区间线段树(板子)--那个苑区的人最瘦
  5. 查看socket缓冲区数据_什么是socket缓冲区?
  6. 北京大学计算机科学李丰,中文智能问答系统作业解析-北京大学计算机科学技术研究所.PDF...
  7. PHP+MySql获取新添加记录的ID值
  8. 软考 程序员教程-第四版第五版变化
  9. storm风暴英雄 tempo_19.4版本TempoStorm 风暴英雄天梯环境报告
  10. 华为手机灵敏度设置_和平精英灵敏度怎么调最稳华为手机?华为二指灵敏度调整设置一览[多图]...
  11. 电脑连接电视的方法---HDMI篇
  12. Windows 10 on ARM, version 21H2 (released Nov 2021) ARM64 简体中文版、英文版(企业版)下载
  13. citrix vdi 服务器性能要求,Citrix测试VDI的最佳hypervisor
  14. 可视化,市场分析表Excel模板,财务统计EXCEL模版,人员变动EXCEL模版,销量完成度Excel模板
  15. jit和jitx区别_JIT的核心思想是什么?
  16. 分布式tensorflow
  17. v18.02 鸿蒙内核源码分析(源码结构) | 内核文件各自含义 | 百篇博客分析HarmonyOS源码
  18. BM发声,孙宇晨入场,国产公链集体进军DeFi
  19. 【传输层01】传输层概述
  20. 《数字恐龙》为了一次配种,他们努力了半年

热门文章

  1. 车架号识别系统-VIN码识别查询
  2. U盘安装CentOS系统
  3. BiomaRt 将小鼠的ENTREZID转化为人类的ENTREZID(同源ENTREZID转换)
  4. Calib 工具说明
  5. 工作流系列(4.1)-Activity表结构介绍
  6. Tensor A must be from the same graph as Tensor B
  7. 利用OpenCV处理图片-马赛克效果
  8. 使用scrcpy投屏——手机投屏到电脑
  9. DDOS hulk,rudy
  10. linux ubantu最新版本,过去十年最佳的Ubuntu版本