Qt5.6.0 移植到ARM(tq2440)步骤及问题记录

QT·移植Qt到ARM平台及搭建Qt交叉编译环境 移植Qt到ARM平台及搭建Qt交叉编译环境 阅读详情

时间:2017年11月29日

平台:unbuntu64位环境  

目标环境:tq2440

编译器:arm-linux-4.4.3


移植QT到开发板并运行起来需要以下几个步骤:

    1、重新编译内核
    2、制作文件系统
    3、移植tslib

    4、移植qt库

对于以上四个步骤在这篇博客有相应的关键步骤以及资源:http://blog.youkuaiyun.com/lizuobin2/article/details/52673494

今天,我在这里记录的是在上述博客步骤中,自己移植遇到的问题,是对上述博客的一个补充:


第一:关于tslib的移植

问题:根据原始博客中的tslib移植的配置选项:

./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ -prefix=/usr/local/tslib


我在进行移植的时候,会出现下面问题:

一:# configure: error: C++ compiler cannot create executables 


然后经过了解是因为自己移植的arm-linux-4.4.3编译器是32位环境下的编译器,ubuntu64原始不支持32位的编译器,因此需要更新ubuntu64 下32位编译器的运行库,在此之前确定你的编译器的路径已经加到/etc/enviroment或者/etc/profile 记得添加完之后source 一下使其生效。


# apt-get install libc6:i386


第二:

上面红色的配置选项,如果实在不行,即编译不通过或者配置错误,可以选择下面比较简单的配置选项:


# ./configure --host=arm-linux --prefix=/usr/local/tslib ac_cv_func_malloc_0_nonnull=yes  --enable-inputapi=no

这个博客有比较详细的tslib移植说明:http://blog.youkuaiyun.com/Chasing_Chasing/article/details/78249794


这里需要注意一个问题,也就是两者之间配置的编译器的问题,第一个是 CC=arm-none-linux-gnueabi-gcc,而第二个是arm-linux-gcc

。因此这里需要注意,如果你在移植tslib是使用的是arm-linux-gcc/g++ 那么你在编译qt库时需要用相同的编译器。



二:关于qt移植的问题

第一:qt移植需要配置

cd qt-everywhere-opensource-src-5.6.0/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
文件,即:

针对于 2440 增加:
  QT_QPA_DEFAULT_PLATFORM = linuxfb
  QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
  QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
  march 指的 cpu 架构,针对 2440 来说是 armv4t
  mtune 指的 cpu 名字,针对 2440 来说是 arm920t


将以下部分
  # modifications to g++.conf
  QMAKE_CC = arm-linux-gnueabi-gcc
  QMAKE_CXX = arm-linux-gnueabi-g++
  QMAKE_LINK = arm-linux-gnueabi-g++
  QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++


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

修改为:-lts 是指在链接时链接 tslib 库
  # modifications to g++.conf
  QMAKE_CC = arm-linux-gcc -lts
  QMAKE_CXX = arm-linux-g++ -lts
  QMAKE_LINK = arm-linux-g++ -lts
  QMAKE_LINK_SHLIB = arm-linux-g++ -lts


  # modifications to linux.conf
  QMAKE_AR = arm-linux-ar cqs 
  QMAKE_OBJCOPY = arm-linux-objcopy 
  QMAKE_NM = arm-linux-nm -P
  QMAKE_STRIP = arm-linux-strip 


上面修改的部分,红色应该注意,这个时关于编译器的问题,这和原文的博客中是不一样的,这个和我在移植tslib时的编译器相同。如果你可以在移植tslib时可以使用arm-linux-gnueabi- 编译器那么此处你就不需要更改成上面的。

  

第二:我们编译qt成功过后,进入/usr/local/Qt5.6/目录

bin  doc  include  lib  mkspecs  plugins  qml  translations


我们需要将复制到开发板的是:lib/ 和plugins 文件夹,将其打包放在开发板的/usr/local/Qt5.6/ 中。



第三:在测试qt程序时可能会出现的问题:

  QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
  QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed

  大概是缺少 libiconv 

  下载 链接:http://pan.baidu.com/s/1c22xb4O 密码:pbld

  mkdir -p /usr/local/libiconv

  ./configure --host=arm-none-linux-gnueabi --prefix=/usr/local/libiconv CC=arm-none-linux-gnueabi-gcc LDFLAGS="-L/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/sys-root/lib" --enable-static

  make

  sudo make install

  把安装目录/lib 下的 preloadable_libiconv.so 文件系统的 /lib 下, 在 /etc/profile 中添加 
  export LD_PRELOAD=/lib/preloadable_libiconv.so

标色部分时原始博客的配置,其实我们可以使用更简单的:

#./configure --host=arm-linux --prefix=/usr/local/iconv-arm-linux


对就是使用这么简单的配置即可,然后步骤继续即可。



第三:在运行qt程序时出现下面问题

./IsClock-2014: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib/libQtGui.so.6)
./IsClock-2014: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib/libQtCore.so.6)

 

问题是由于编译Qt的arm-linux-gcc版本与编译内核与文件系统的版本不一致

 

解决办法:

在电脑的linux系统下arm-linux-gcc的安装目录下arm-none-linux-gnueabi/lib下的所有文件拷贝到开发板/lib下



最终在解决一系列问题之后,我移植成功的画面如下:












Qt介绍1---QPA(Qt Platform Abstraction) Qt是一个夸平台的库(一直宣称“Qt everywhere”),但是Qt底层不是夸平台的。比如:Qt中Gui部件的核心类QWidget,该类除了qwidget.h 和 qwidget.cpp两个原文件外,还有 kernel/qwidget_mac.mm kernel/qwidget_qws.cpp kernel/qwidget_win.cpp kernel/qwidget_s60.cp 阅读详情

相关推荐

移植QT5.6到韦东山JZ2240嵌入式开发板(史上最最最最最详细的QT移植教程)

首先感谢http://blog.csdn.net/lizuobin2/article/details/52673494的博主,应该是韦东山团队的老师,说实话,拿到JZ2440的板子很长时间了,每次都有冲动去折腾它,其实初学者不是很喜欢从0开始学linux,我们迫切想知道linux是哪样,以及自己拿这块板子可以玩点什么,那么初学者第一件想干且有热情干的事情就是不用懂原理,按照扎实的步骤编译uboot

yuxiangbetiian的博客 1万+

Qt学习之路:Qt绘制系统简介

1、参考:Qt 绘制系统简介: https://www.devbean.net/2012/10/qt-study-road-2-paint-sys/ 总结: Qt的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。其整个绘图系统是基于 QPainter, QPainterDevice 和 QPaintEngine 三个类。 其中可以把 QPainter 理解成画笔;把 QPaintD...

1610

学习TQ2440之学习方法篇

对于一个刚拿到2440的开发板的初学者来说,面对茫茫多的资料,通常不知从何着手。下面我来讲讲一个新手如何快速入门嵌入式的一般学习步骤: 一、了解ARM9的基本框架和熟悉TQ2440板的使用过程     这里的学习,主要依赖两个东西。     第一个是《TQ2440开发板使用手册V3.2_20121203.pdf》,请务必从手册的第一页开始逐字的按照上面所写的进行操作学习,手册上面已经写得非常

XIAO_PING_PING的专栏 3334

Qt5 for ARM环境搭建及tslib库制作

本文主要记录本人在mini2440上制作tslib库和搭建Qt 5.6环境的过程 1.tslib库制作 复制tslib-1.4.tar.gz到自己的目录中,输入如下命令解压。 tar -xzf tslib-1.4.tar.gz 输入命令cd tslib进入tslib目录,输入如下命令,配置tslib, ./configure --host=arm-linux ac_cv_func_ma...

eurphan_y的博客 1837

qt4.8.2在tq2440开发板上的移植(一)--编译和安装

主机版本:ubuntu11.04 交叉编译器版本:4.3.3   移植的主要工作就是编译在ARM板上运行的qt库,并且把这些库做到根目录中。 需要的文件tslib-1.4.tar.gz qt-everywhere-opensource-src-4.8.2.tar.gz   具体步骤如下: 1、首先编译安装触摸屏驱动库tslib-1.4 解压 root@rjm-home:~/wor

synu_soft的专栏 2638

Qt Embedded4.6.2与tslib1.4移植到arm平台

相关环境:开发板:友善之臂mini2440(64M版)(注:内核是使用友善之臂编译的2.6.32版内核)主机操作系统:fedoa 12 i686所需资源:tslib1.4qt-everywhere-opensource-src-4.6.2友善之臂提供的交叉编译工具(gcc版本为4.3)移植过程:tslib的移植:解压下载的tslib1.4压缩包

halechan的专栏 3042

qt-4.8.5移植tq2440成功

环境: Fedora 17 arm-linux-gcc    4.3.2 tq2440    》linux-2.6.39 qt安装 cd qt-everywhere-opensource-src-4.8.5/ 1.配置 echo yes | ./configure -prefix /usr/local/qte-arm -opensource -embedded arm -xp

stevenking55的专栏 5835

【Qt】Qt5.x移植后的环境配置(imx6)

环境配置脚本如下#!/bin/shexport QTDIR=/usr/lib/qt5 export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins export QT_QPA_PLATFORM=eglfs:fb=/dev/fb0 export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event1 export Q

郭老二 8336

qt4.7.0的移植

一:环境介绍<br />虚拟机:vmware 7.0 <br />Linux 环境:ubuntu 9.04<br />交叉编译环境:arm-linux-g++ 3.4.5<br />硬件平台:TQ2440二:移植步骤安装交叉编译环境<br />由于这里使用的是QT2440管盘中提供的交叉编译工具链EABI-4.3.3_EmbedSky_20100610.tar.bz2,放在/opt/目录下解压<br />主要是在解压后可以看到其中含有两个版本,由于qt4.7.0的编译必须使用3.4.5版本所以在设置交叉编译

yanchong_RD的专栏 4673

Abaqus 单元与全局刚度矩阵导出实战指南:从INP修改到结果解析

本文提供了Abaqus中导出单元刚度矩阵和全局刚度矩阵的完整实战指南。通过详细步骤讲解INP文件修改、关键指令插入及结果文件解析,帮助工程师、研究人员和二次开发者深入理解有限元软件内核,实现理论验证、二次开发与深度问题调试。

k8s6orchestrator的博客 898

5分钟搞懂深度学习如何革新声源定位:从GCC-PHAT到DNN的实战对比

本文深入对比了深度学习与传统GCC-PHAT方法在声源定位领域的实战表现。通过具体实验数据,展示了DNN模型在强混响、低信噪比等复杂场景下,如何实现定位准确率的显著提升,并探讨了其数据驱动范式带来的鲁棒性优势与工程部署挑战。

3a9bq4r8t2y的博客 223

移植Qt4.8.5到mini2440开发板

之前移植过6410的,本来想直接用以前的库,发现不行,好像是编译器的问题,

Khaki 2448

Linux 隐藏进程

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。关于第一种hook方式可以参考上一篇文章。最后推荐一个rootkit工具。

chi's blog 2051

Qt 4.6.3 移植到mini2440的详细记录

Qt 4.6.3 移植到mini2440的详细记录 (基于CentOS - 5.4) 分类: 基于 ARM+Linux+Qt4 的嵌入式软件开发2010-08-28 10:22 6343人阅读 评论(32) 收藏 举报 qtcentos编译器嵌入式工具path 一般而言,Qt应用程序的内容可分为Qt库的编译,Qt库的移植和基于Qt的应用程序的移植。Qt库的编译所花费的耗线性时间代价是

kuailexiaochuan的专栏 652

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月12日-生产期间维护用的双重隔离

生产期间维护用的双重隔离。该程序用于准备将一个或多个双工位设置为维护状态,同时SABRE 3D/3DxT/3D Scimitar保持生产运行。其目的是在不中断生产的情况下将双工位与运行中的设备隔离。

weixin_46735260的博客 574

从零构建AI Agent集群:Docker Compose与Nginx部署实战

在AI应用开发领域,微服务架构和容器化部署已成为提升开发效率和系统可维护性的关键技术。Docker Compose作为容器编排工具,能够将多个独立服务(如Node.js、Python应用)及其依赖(数据库、缓存)封装在隔离环境中,并通过统一配置文件定义服务间的网络与依赖关系,实现一键启停。Nginx作为反向代理,则提供了统一的网络入口、请求路由和负载均衡能力,是构建高可用Web应用的基石。这种组合技术方案的价值在于,它能将复杂的AI系统(如工作流引擎、对话Agent、技能库)的部署运维复杂度大幅降低,使得开

weixin_27028523的博客 638

QT Embedded 4.5.0 移植到友善之臂mini2440开发板

QT Embedded 4.5.0移植到友善之臂mini2440开发板1、准备文件主机编译器:gcc 版本4以上的交叉编译器:arm-linux-gcc软件:qt-embedded-linux-opensource-src-4.5.0.tar.bz2qt-x11-opensource-src-4.5.0.tar.bz2tslib1.4.tar.gz2、编译及安装QT-x11qt-x11版本可以产生

davidchan1979的专栏 3100

Allegro172版本多人协同在线设计操作指导

首先用户需要在同一个局域网下,并且Allegro172的版本必须一致,比如都是S082的版本。另外一个用户同样打开相同版本的172,选择Symphony Team design。Allegro升级到172版本,可以支持多人协同设计,并且实时同步,具体操作如下。协同模式下,不能直接保存文件,需要另存版本,注意时常保存文件,以免丢失数据。第一个用户打开PCB,选择Symphony Team design。等待一会出现如下窗口,表示已经共享成功了,并且记下IP地址。出现一个窗口,输出开共享用户的IP地址。

weixin_54787054的博客 4953

Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440

本人曾在Ubuntu10.10、红帽企业版6中尝试过多次,都出现编译出错问题!最终还是换成mini2440使用手册中的Fedora 9说明建立开发环境跟系统有关,网上有网友说是那两个系统的gcc版本太新,但我试过低版本的gcc编译器,问题还是没有解决!参考Fedora12 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到micro2440后自己写下自己的操作经历<br />环境:虚拟机Fedora9(建议安装Vmware Tools,详细安装方法参照Vmware帮助文档),USB

lusehu的专栏 2414

普通用户也能免费使用 SAP Joule!

点击 SAP Joule 给出的按钮之后,SAP Business Application Studio 左侧显示的界面,就从 SAP Joule 替换成了 SAP Fiori tools 的 Project Accelerator 工具。接下来就是在后者中标准的操作流程了。笔者之前的文章,有朋友提问,既然 ChatGPT,DeepSeek,Grok 这些主流 AI 工具,回答 SAP 相关问题时都经常翻车,那 SAP 自家的 Joule 表现又如何呢?还有朋友评论:如何才能使用 SAP Joule?

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1018

SAP Business Technology Platform 支持的技术栈

SAP Business Technology Platform(简称 BTP)是 SAP 提供的一个综合技术平台,旨在帮助企业实现业务转型和创新。BTP 融合了数据库管理、应用开发、集成、分析和智能技术,为企业提供从基础架构到端到端应用的全面服务。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1567

linux GUI-移植QT5.6到mini2440

---------------------------------------------------------------------------------------------------------------------------- 内核版本:linux 5.2.8 根文件系统:busybox 1.25.0 u-boot:2016.05 开发板:Mini2440 宿主机:Ubun...

Graceful_scenery的博客 242

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

移植Qt5.6

交叉编译工具:arm-linux-gcc-4.4.3内核:linux-4.12.0(使用移植linux-4.12到JZ2440里的linux-4.12,按照2.4 制作补丁内容获取内核,补丁下载地址:https://pan.baidu.com/s/1_uyLxOIgwVGCJPip5RcFNQ)制作好的网络文件系统目录:/work/tools/fs_mini/(使用制作文件系统里制作的文件系统)开...

墨、白的博客 1504

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

基于JZ2440的QT4移植

开发环境: Linux操作系统:Ubuntu9.10 开发板:JZ2440 QT/E版本:qt4.6.3 交叉编译工具:arm-linux-gcc-3.4.5-glibc-2.3.6 1、移植用于触摸屏校正的tslib1.4     #tar xzvf tslib-1.4.tar.gz     #./autogen.sh     #./configure--prefix

u010698378的专栏 722

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Qt移植

终于成功移植QT4.5.3至mini2440,并能运行QT自带的应用程序,总得来说还算很顺利,下面是我移植的全部过程。 首先,我交待一下我的开发环境:      宿主机:Fedora9       主机Gcc:gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)      交叉编译器:arm-linux-gcc-4.3.2 (友善光盘自

寒冰 1562
上一篇: QT5.6移植到ARM 之 移植tslib1.4总结
下一篇: 关于QT中 **.cpp:1:1: error: stray '\377' in program 错误解决
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值