目录

前言

一、下载qt-4.8.6

二、一键编译

三、移植到目标机

3.1 文件移植

3.2 配置环境变量

3.3 添加库文件

四、测试

4.1 安装和配置qt-creator

4.2 创建并执行测试demo

总结


前言

QT是一个跨平台的 C++图形用户界面库,具有丰富的API、良好封装机制和优良的跨平台特性,且在遵守GPL、LGPL前提下可以免费使用,深受嵌入式开发程序员所喜爱。

本次移植qt4.8.6的软硬件环境环境如下:

主机环境:Ubuntu 18.04.4 LTS

编译环境:arm-linux-gcc-4.3.2

开发工具:qt-creator-4.12.0

目标机:飞凌-OK6410-A

目标机内核:linux 3.0.1


一、下载qt-4.8.6

进入QT官网,下载qt4.8.6源文件包,地址:https://download.qt.io/archive/qt/4.8/4.8.6/,得到源文件包qt-everywhere-opensource-src-4.8.6.tar.gz。

二、一键编译

编写一键编译脚本build-qt.sh,代码如下:

#!/bin/bash# Configure the environment variables
export PATH=/usr/local/arm/4.3.2/bin:$PATH
export TOOLCHAIN=/usr/local/arm/4.3.2
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
export TB_CC_PREFIX=arm-linux-# Unzip the source package
rm -rf qt-everywhere-opensource-src-4.8.6
tar xfvz qt-everywhere-opensource-src-4.8.6.tar.gz
cd qt-everywhere-opensource-src-4.8.6# based on x86 architecture (Output to directory /opt/qtenv/qt-4.8.6-x86)
#echo yes | ./configure -prefix /opt/qtenv/qt-4.8.6-x86 -opensource -no-webkit -qt-libtiff -qt-libmng  -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp  -I /usr/local/tslib/include -L /usr/local/tslib/lib# based on arm architecture (Output to directory /opt/qtenv/qt-4.8.6-arm)
echo yes | ./configure -prefix /opt/qtenv/qt-4.8.6-arm -opensource -confirm-license -embedded arm -xplatform qws/linux-arm-g++ -little-endian -host-little-endian -shared -no-qt3support -no-phonon -no-phonon-backend -qt-zlib -no-gif -no-libtiff -no-qvfb -qt-libjpeg -no-nis -no-opengl -no-cups -no-webkit -no-glib -no-dbus -no-rpath -no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-neon -no-audio-backend -no-svg -no-javascript-jit -no-script -no-scripttools -no-multimedia -no-openssl -nomake tools# Compilation and installation
make 2>&1 | tee ../qte-4.8.6-Makelog
make install

编译完成后,在/opt/qtenv目录下生成qt-4.8.6-arm,ls查看文件夹的内容,如下图:

root@ubuntu:~/tool/qt/qt-opensource-src# ls /opt/qtenv/qt-4.8.6-arm/ -all
total 40
drwxr-xr-x  10 root root 4096 Jun  4 19:19 .
drwxr-xr-x   4 root root 4096 Jun  4 18:47 ..
drwxr-xr-x   2 root root 4096 Jun  4 19:19 bin
drwxr-xr-x  18 root root 4096 Jun  4 19:19 demos
drwxr-xr-x  28 root root 4096 Jun  4 19:19 examples
drwxr-xr-x   9 root root 4096 Jun  4 19:18 include
drwxr-xr-x   4 root root 4096 Jun  4 19:18 lib
drwxr-xr-x 109 root root 4096 Jun  4 19:19 mkspecs
drwxr-xr-x   7 root root 4096 Jun  4 19:18 plugins
drwxr-xr-x   2 root root 4096 Jun  4 19:18 translations

三、移植到目标机

3.1 文件移植

将qt-4.8.6-arm文件夹复制到目标机的/usr/local下,将目标机的qt-4.8.6-arm重命名为qt-4.8.6。

3.2 配置环境变量

打开文件/etc/profile,添加qt配置信息,如下图:

export QTDIR=/usr/local/qt-4.8.6
export QPEDIR=$QTDIR
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export QT_PLUGIN_PATH=/usr/local/qt-4.8.6/lib
export QT_QWS_FONTDIR=/usr/local/qt-4.8.6/lib/fonts
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib

3.3 添加库文件

到交叉编译器的库里找到相应的库(libstdc++和libpng),复制到开发板lib库目录下,如下图:

cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6 /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12 /rootfs/lib/ cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libpng.so /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libpng.so.3 /rootfs/lib/
cp -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/libpng.so.3.35.0 /rootfs/lib/ 

四、测试

4.1 安装和配置qt-creator

下载qt-creator-opensource-linux-x86_64-4.12.0.run,并Ubuntu 18.04.4上完成安装,同时,需要配置好qt-creator-4.12.0的编译环境,如下图:

4.2 创建并执行测试demo

使用qt-creator创建一个基于QWidget的应用程序,默认命名为untitled,交叉编译后,移植到目标机并执行,如下图:

./untitled -qws

在目标机的屏幕上将出现untitled的运行结果,如下图:


总结

本文的关键是制作好“一键编译脚本”和“配置qt-creator交叉编译环境”,文件系统上如果缺少库文件,需要使用busybox编译出文件系统所需要的库。

嵌入式开发之qt-4.8.6移植相关推荐

  1. 视频教程-物联网嵌入式开发之STM32 和 RT-thread-物联网技术

    物联网嵌入式开发之STM32 和 RT-thread 我叫连志安,现任职广东长虹技术研究所(国企).之前在康佳集团(国企).CVTE(上市公司)等公司任职.负责过Android TV.智能网关.路由器 ...

  2. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...

  3. 嵌入式开发之Qt-5.9.6应用程序开发环境搭建

    参考文档 嵌入式开发之Qt-5.9.6交叉编译(带WebEngine) Qt-5.9.6 linux安装包官方下载地址 Qt-5.9.6 linux安装包百度云下载地址 开发环境介绍 主机操作系统:U ...

  4. 嵌入式linux基本指令,成都嵌入式开发之Linux常用命令大全

    原标题:成都嵌入式开发之Linux常用命令大全 Linux系统中有很多命令,使用Linux系统最常用的就是命令操作,而不是像Windows一样,使用鼠标操作.Linux中许多常用命令是必须掌握的,也有 ...

  5. 嵌入式开发之NorFlash 和NandFlash

    嵌入式开发之NorFlash 和NandFlash 转自:http://blog.csdn.net/tigerjb/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对 ...

  6. tablewidget 多行表头_Qt GUI图形图像开发之QT表格控件QTableView,QTableWidget复杂表头(多行表头) 及冻结、固定特定的行的详细方法与实例...

    我们在开发过程中对于表格使用频率还是挺高的,使用QT框架开发时候我们使用QTableView或者QTableWidget创建表格. 其中表格分为 表格头与表格体: 对于简单地表格,我们可以设置表头来满 ...

  7. 嵌入式开发之linux根文件系统移植

    目录 前言 一.创建根文件系统目录 二.添加命令与实用程序 2.1 编译和安装 busybox 2.2 拷贝busybox内的小程序 三.添加lib库文件 3.1 拷贝工具链内的动态库 3.2 拷贝工 ...

  8. 专科生的嵌入式开发之路

    俗话说的好,高中不努力,大学指定没戏,哈哈,谁说的,当然是我说的.高考结束了,我成功以320分的优异成绩成为了一个地道的专科生,高中玩嗨了,这回选志愿就傻眼了,这点分可选的学校并不多,要不再复习一年? ...

  9. 嵌入式开发之路,从51单片机开始

    关注.星标公众号,直达精彩内容 来源:技术让梦想更伟大 作者:李肖遥 嵌入式开发入门之路 我相信很多朋友第一次接触的单片机应该就是51单片机,8位的mcu,丰富的教程,可以做很多小玩意,让初学者基本掌 ...

最新文章

  1. 如何判断Android手机当前是否联网?
  2. php 字符串转时间戳_php如何将时间字符串转换为时间戳
  3. 演示:通过实验取证IP报文的各个字段
  4. python基础知识点-Python基础中的29个知识点
  5. python 自定义模块怎么用_python自定义模块使用说明
  6. ProGuard中keep到底有什么作用
  7. DOA——ESPRIT算法
  8. DelayedOperation分析
  9. Wireshark设置interface 时提示“There are no interfaces on which a capture can be done ”
  10. eclipse快速导包快捷键_【IntelliJ IDEA mac新手入门】IDEA如何快速搭建Java开发环境...
  11. 【UVA221】Urban Elevations(建筑物可视问题-数学题)
  12. 阿里巴巴 EasyExcel (web版) 上传与下载(超详细) Excel上传下载
  13. vue 图表组件_基于Vue.js中可用的JUI图表的Vue组件
  14. FMI飞马网 | 【线上直播】如何处理好横向关系 在协同与合作中实现双赢(下)
  15. 如何在Windows系统上实现共享文件夹
  16. 简单五子棋(单机版-C)
  17. IE无法打开网页却能上网的解决方案(转载)
  18. AI人工智能工程师 的三个层次
  19. 【Vue】Vue生成二维码 Vue把url地址生成二维码手机打开 扫一扫手机端打开实战案例 vue生成二维码
  20. 用友NC65产品portal新增按钮

热门文章

  1. SAP ABAP 内表无数据、数据损坏、数据恢复办法。
  2. 阿里万亿级日访问量下,Redis在微博的9年优化历程
  3. Jenkins自动化部署环境搭建
  4. 智立方通过注册:年营收5.48亿 超70%订单来自苹果
  5. ipad分屏功能_iPad Pro2020新功能,附几个 iPad 系列使用小技巧
  6. a href=mailto:的使用总结笔记
  7. iPhone 开发秘籍
  8. PPPoE 报文实例
  9. 常见各种PLMN的含义(RPLMN,HPLMN...)以及自动选网原则
  10. 施耐德电气:以数字化利器,助力中国产业“双转型”