Ubuntu 14.04 LTS + Qt 4.7.3 交叉编译

说明

前段时间在做Qt在ARM上的移植工作,开发板是米尔科技的 z-turn 版,带有赛灵思(Xilinx)的 zynq-7000 系列的 SOC (FPGA+ARM),最开始试着在其上移植 Qt5,也联系了米尔科技的工程师,回复说没有移植过,几经周折,始终未遂,总是执行不报错但就是不弹出窗口,无奈,就搁置下来。

几个月后,项目需要,又开始重新考虑移植的问题。由于本人对FPGA不熟,就使用了米尔科技官方光盘中提供的启动文件及系统(ubuntu12.04),这样可以成功启动系统、使用HDMI显示器(由于其中的HDMI控制器是用FPGA实现的,而该IP核又是非免费的,只能试用30分钟) 、上网(DSL模块似乎有问题)。后来偶然发现该ubuntu系统中的编译器为 arm-linux-gnueabihf-,注意 hf ,即支持硬浮点的编译器,与之前使用的光盘里的 arm-xilinx-linux-gnueabi- 支持的软浮点的编译器不同,好坑啊;又考虑到系统版本较低,故这次的环境如下:

  • 宿主机:Ubuntu 14.04 LTS + Qt5
  • 交叉编译器:arm-linux-gnueabihf-
  • ARM版Qt版本:Qt4.7.3

终于成功了!!!

先上张图

下面介绍移植步骤。

交叉编译Qt

Qt源码的编译安装与普通linux源码程序安装大同小异,只需三个步骤:配置、构建与安装:

configure
make
make install

安装配置交叉编译环境

arm-linux-gnueabihf 交叉编译器可以直接通过 apt-get 安装, 命令如下:

sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

配置Qt

指定交叉编译器

在运行 configure命令之前,需要先修改 qmake.conf文件中的交叉编译器,首先在 qt4.7-src-dir/mkspecs/qws/下找到 linux-arm-gnueabi-g++ 文件夹,复制并命名为 linux-arm-gnueabihf-g++,打开该文件夹,修改 qmake.conf文件

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

include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

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

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJcopY           = arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = arm-linux-gnueabihf-strip

load(qt_config)

配置

./configure -embedded armv9 -xplatform qws/linux-arm-gnueabihf-g++ -little-endian -opensource -host-little-endian -confirm-license -nomake demos -nomake examples -no-pch -no-openssl -no-opengl

构建与安装

配置完成后,执行:

make
make install

如果电脑有多线程,可以使用多线程,来加快速度:

make -j4
make install

安装路径为:/usr/local/Trolltech

移植Qt库到ARM

移植到开发板

将上述安装目录通过 sudo cp -arf 拷贝到开发板SD卡,如:

sudo cp -rf /usr/local/Trolltech /media/liu/ROOFTS/usr/local

也可以不全部拷贝,但需要包含以下目录:

  • lib
  • plugins

设置环境变量

文件 .bashrc

export QTDIR=/usr/local/Trolltech/QtEmbedded-4.7.3-generic

 export PATH=$QTDIR/bin:$PATH
 export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 export QWS_disPLAY="LinuxFB:/dev/fb1"
 export QWS_USB_KEYBOARD="/dev/input/envent0"
 export QWS_MOUSE_PROTO="MouseMan:/dev/input/mouse1"

 export QT_QWS_FONTDIR=$QTDIR/lib/fonts/
 export QT_PLUGIN_PATH=$QTDIR/plugins/

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...