ubuntu 交叉编译qt 5.7 程序到 arm 开发板

2023-11-02

ubuntu 交叉编译qt 5.7 程序到 arm 开发板
平台
1 ubuntu 12.04
2 arm-linux-gcc 4.5.1
3 QT 5.7
4 开发板210 armcortex-A8 


一 概述
QT5的ARM移植及其中文显示


二 准备工具
1.交叉编译工具(arm-linux-gnueabi-4.5.1.tar.bz2)
2.交叉编译好的Qt库(armqt5.5-gec.all.fonts.tar.bz2)
3.要用到的库(Qt依赖的库)(armlib-all.tar.bz2,字体,触摸屏,总线)tslib库,(armqt5.5-gec下载到开发板(只下载里面的(lib, plugins))


三 交叉编译环境搭建
1 源码编译 (ARM版本 开发板运行环境搭建) 从 http://www.qt.io/download-open-source/下载 Qt 源代码进行交叉编译 


2 把源代码到 qt-everywhere-opensource-src-5.5.0.tar.gz 下载到 linux 系统的某个目录下面解压, 进入 qt-everywhere-opensource-src-5.5.0 目录交叉编译 Qt 源代码得到 ARM 平台的 Qt


3 准备:
4 arm 的工具链--这里用的是 arm-linux-gcc(4.5.1)
5 修改 qt-everywhere-opensource-src-5.5.0/qtbase/mkspeces/linux-arm-gnueabi-g++/qmake.conf
在文件最前面添加一行 QT_QPA_DEFAULT_PLATFORM=linuxfb 并且把 arm-linux-gnueabi-
改为自己系统中安装的 arm 工具链名称这里改为 arm-linux-
6 配置


./configure -v --prefix=/opt/armqt5.5-gec/ -release -make libs -xplatform linux-arm-gnueabi-g++
-optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-libjpeg -qt-zlib -qt-freetype -no-sse2
-no-opengl -no-openssl -no-nis -no-cups -no-glib -no-iconv -no-xcursor -no-xfixes -no-xrandr
-no-xrender -no-separate-debug-info -nomake tools -nomake examples
-I/home/tiydy/armlib/tslib/include -L/home/tiydy/armlib/tslib/lib


为了是 Qt5 支持 tslib 添加下路径编译触摸插件
-I/home/tiydy/armlib/tslib/include 为 tslib 的头文件路径
-L/home/tiydy/armlib/tslib/lib 为 tslib 的库文件路径


配置后运行 make -j 4 (可以 4 个目标一起构建提高编译速度)
编译后运行 make install (就会把 Qt 安装在/opt/armqt5.5-gec/目录下了)


把/opt/armqt5.5-gec/目录下的 lib 和 plugins 目录拷贝到开发板/opt/armqt5.5-gec 目录就可以并


且在开发板/etc/profile 文件中添加下面配置
export QTDIR=/opt/armqt5.5-gec
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
export LD_PRELOAD=/tslib/lib/libts.so
export QT_QPA_GENERIC_PLUGINS=tslib
export LD_LIBRARY_PATH=/tslib/lib:$QTDIR/lib 


四 PC交叉编译程序
1 安装交叉编译工具(4.5.1)
(安装交叉编译工具arm-linux-g++/gcc 把arm-linux-gnueabi-4.5.1.tar.bz2解压到/opt目录下)
# ~/armQt$ cp arm-linux-gnueabi-4.5.1.tar.bz2 /opt/
进入/opt目录
# tar -jxf arm-linux-gnueabi-4.5.1.tar.bz2 
# mv usr/local/arm/4.5.1/ ./

2 安装交叉编译好的Qt库
(安装编译好的Qt库,把armqt5.5-gec.all.fonts.tar.bz2 解压到/opt目录下)
gec@ubuntu:~/armQt$  cp armqt5.5-gec.all.fonts.tar.bz2 /opt/
进入/opt目录解压
gec@ubuntu:/opt$ tar -jxf armqt5.5-gec.all.fonts.tar.bz2


3 设置交叉编译工具环境变量 ,路径据ubuntu实际
查看环境变量配置的路径 # echo $PATH
3.1 方法1
gec@ubuntu:/opt$  export PATH=/opt/4.5.1/bin/:$PATH (放入配置文件/etc/bash.bashrc)


3.2 方法2 环境配置文件 编辑vi /etc/profile, 重启 source /etc/profile  (注意:用source重启只用本终端有效,编译的哪个终端也要重启,不然环境还没改过来,)
export PATH=/opt/usr/local/arm/4.5.1/bin/:$PATH   //:$PATH (代表以前的)要写在后面, 设置的要放在以前的前面,优先使用以前的
export PATH=/opt/armqt5.5-gec/bin/:$PATH

3.3 方法3 
编写环境配置文件env.sh
export QTDIR=/opt/armqt5.5-gec
export PATH=$QTDIR:/opt/usr/local/arm/4.5.1/bin:$PATH  (据实际目录设置)  //如QT安装在ubuntu,  opt/Qt5.5.0/5.5/gcc/bin/qmake ,生成makefile,g++编译在ubuntu运行的程序
//export PATH=$QTDIR:/usr/local/arm/4.5.1/bin:$PATH
把env.sh文件放入工程目录下
source env.sh ----


4 交叉编译程序


4.1 创建一个qmake别名
alias armqmake='/opt/armqt5.5-gec/bin/qmake'
进入qt项目目录下
MyRun        MyRun.pro       mythread.cpp
Makefile       myrun.cpp    MyRun.pro.user  mythread.h
moc_myrun.cpp  myrun.h      myrun.ui        mythread.o
gec@ubuntu:/mnt/hgfs/C++-QT/Qt/004/code/MyRun$


4.2 使用Qt的qmake工具生成交叉编译的makefile文件--make编译/opt/armqt5.5-gec/bin/qmake
4.2.1 用指定的qmake生成Makefile文件
生成arm版本的Makefile ----》qmake
gec@ubuntu:/mnt/hgfs/C++-QT/Qt/004/code/MyRun$  armqmake  //别名alias armqmake='/opt/armqt5.5-gec/bin/qmake'


4.2.2 生成arm版本的程序----》make
gec@ubuntu:/mnt/hgfs/C++-QT/Qt/004/code/MyRun$  make


4.2.3 把生成的可执行文件下载到开发板(根目录)运行


5 开发板Qt运行环境搭建
把交叉编译好的qt库下载到开发板


5.1 制作开发板文件系统, 
5.1.1 常用目录
bin   //命令 ,把 armlib.tar.bz2下面的/dbus/bin 目录下的文件拷贝进来
opt   //放qt库存 ,从第二步的裁剪好的库放进去,可按需要后续添加, 在QT软件 帮助--索引可查询函数所依赖的库
ioT //驱动
tslib //触屏
usr
/usr/share/fonts/ //字库目录,可从ubuntu拷贝过来
/usr/share/fonts/truetype  //把字体放到这个目录
etc //配置文件
/etc/profile
lib //库 ,把 armlib.tar.bz2下面的/dbus/lib 目录下的文件拷贝进来(拷贝时加选项把链接文件也一起拷贝 -radf )


5.1.2 打包目录成img文件, 把所有文件目录放到总目录 rootfs 下
# ./mkyaffs2image   rootfs  rootfs-v1.img
mkyaffs2image.rar

5.2 QT主要的库, (放在开发板/opt下) armqt5.5-gec.all.fonts.tar.bz2,准备交叉编译好的Qt库(把交叉编译好的Qt库下载到开发板/opt/下)
5.2.1 qt库存在开发板目录 /opt/armqt5.5-gec/lib
//配置文件: /etc/profile 
//# cp unyaffs /bin/
//# unyaffs  rootfs.img


5.2.2 裁剪qt库, 把armqt5.5-gec.all.fonts.tar.bz2 , 解压得目录 armqt5.5-gec


5.2.2.1 armqt5.5-gec 里可以删去的目录 rm bin/ doc/ include/  -r   //
5.2.2.2 armqt5.5-gec/lib 里必要的三个文件, 例: cp  libQt5Core.*  ./  -radf   //-radf和链接文件一起拷贝
libQt5Core.   //核心
libQt5Gui. //按钮,图形
libQt5Widgets. //图形,界面


5.2.2.3 armqt5.5-gec/lib 里的其它文件
libQt5Network //网络
libQt5Sql. //数据库
libQt5DBus. //总线
libQt5PrintSuppon //打印机


5.2.2.4 把裁剪好的armqt5.5-gec拷贝开发板/opt下


5.3 QT依赖的库,(armlib-all.tar.bz2,字体,触摸屏(tslib库),总线), 解压得目录armlib 
5.3.1拷贝armlib-all.tar.bz2到开发板/home/tiydy目录下(如果没有创建一个)
解压 tar -jxf armlib-all.tar.bz2  //解压得目录armlib


5.3.2字库拷贝到开发板
在开发板创建一个存入字库的目录mkdir /usr/share/fonts/truetype
在把字库droid拷贝到这个目录下


5.3.3 机器码machine-id
把/dbus/lib中的库拷贝到开发板/lib下(-radf包含链接文件)
# cp ./* /lib -radf
把/dbus/bin下的文件拷贝到开发板bin目录  ,(或在环境变量 /etc/profile设置路径)
# cp ./* /bin
在开发板运行(因dbus-uuidgen已拷贝到/bin , 所以在哪个目录下运行都可以)
# dbus-uuidgen > /etc/machine-id   (重定向创建文件)


5.4设置开发板配置文件/etc/profile
方法1
把profile配置文件拷贝到开发板/etc/ 
把带QPE的删除或注释


方法2 
#fonts   //字库 , 开发板上,QT显示汉字
export FONTDIR =/home/tiydy/armlib
export LD_LIBRARY_PATH =$LD_LIBRARY_PATH:$FONTDIR/fontconfig/lib:$FONTDIR/freetype/lib


#QT5 config  //QT5配置
export QTDIR =/opt/armqt5.5-gec   //QT路径
export QT_QPA_PLATFORM_PLUGIN_PATH =$QTDIR/plugins //QT插件路径
export QT_QPA_PLATFORM =linuxfb //QT显示的一种方式
export QT_QPA_FONTDIR =$QTDIR/lib/fonts //QT字库路径
export LD_PRELOAD =/tslib/lib/libts.so:$QTDIR/plugins/platforms/libqlinuxfb.so //导入触摸屏库存,插件平台库存(linuxfb对应的插件)
export QT_QPA_GENERIC_PLUGINS =tslib  //指定用tslib来实现
export LD_LIBRARY_PATH =/tslib/lib:$QTDIR/lib:$LD_LIBRARY_PATH //指定用tslib的库  


五 Qt程序移植到开发板
1 在运行qt程序
# ./文件名


六 异常及解决
1 [root@GEC210 /]# ./a1025 
1.1 错误提示
./a1025: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory  //找不到libfontconfig.so.1


1.2查找有没有这个文件, 如果没有这安装相关库存,或从其它拷贝
[root@GEC210 /]# find / -name "libfontconfig*"
/opt/armlib/fontconfig/lib/libfontconfig.so.1.4.1
/opt/armlib/fontconfig/lib/libfontconfig.so
/opt/armlib/fontconfig/lib/libfontconfig.so.1
/opt/armlib/fontconfig/lib/libfontconfig.a
/opt/armlib/fontconfig/lib/libfontconfig.la
/opt/armlib/fontconfigs/lib/libfontconfig.so
/opt/armlib/fontconfigs/lib/libfontconfig.so.1


1.3把文件的路径添加到 /etc/profile
如, a) 另定义一个目录路径(FONTDIR_OPT)
export FONTDIR_OPT=/opt/armlib/fontconfigs   
b) 添加到路径集里 (:$FONTDIR_OPT)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FONTDIR/fontconfig/lib:$FONTDIR/freetype/lib:$FONTDIR_OPT/lib  


2 [root@GEC210 /]# ./a1025 
./a1025: error while loading shared libraries: libQt5DBus.so.5: cannot open shared object file: No such file or directory   //没找到文件
查找只有这个,原文件,可软链接成多个版本, 如 *.so  ,  *.so.5  ,  *.so.5.5
libQt5Gui.so.5.5.0
软链接 : ln 原文件  生成的链接文件  -s
ln libQt5DBus.so.5.5.0 libQt5DBus.so.5 -s


3 在开发板运行程序出现下面错误  (没找机器码machine-id)
3.1 错误提示
from:tiydy-2015-10-16
process 146: D-Bus library appears to be incorrectly set up;
failed to read machine uuid: Failed to open "/etc/machine-id": No such file or directory
See the manual page for dbus-uuidgen to correct this issue.
D-Bus not built with -rdynamic so unable to print a backtrace
Aborted


3.2 解决
3.2.1 添加dbus库, (库在armlib.tar.bz2下面的/dbus/lib里面)


3.2.2 解压后,把/dbus/lib中的库拷贝到开发板/lib下(-radf包含链接文件)
# cp ./* /lib -radf


3.2.3把/dbus/bin下的文件拷贝到开发板bin目录  ,(或在环境变量 /etc/profile设置路径)
# cp ./* /bin


3.2.4在开发板运行(因dbus-uuidgen已拷贝到/bin , 所以在哪个目录下运行都可以)
# dbus-uuidgen > /etc/machine-id   (重定向创建文件)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu 交叉编译qt 5.7 程序到 arm 开发板 的相关文章

  • 构建qt程序时未定义的符号:找不到qt_version_tag

    我正在学习Qt5 6 我正在使用 Ubuntu 14 4 当我链接我的程序时 出现以下错误 undefined reference to qt version tag 在 CMakeLists txt 中 link libraries Qt
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • Nginx 作为负载均衡器,具有 75% 和 25% 加权路由

    我是 Nginx 新手 我有两台服务器 serverA 和 serverB 我希望 75 的请求发送到 serverA 其余 25 的请求发送到 serverB 这可能吗 使用nginx加权路由 stream upstream stream
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 如何在 ASP.NET Core 6.0 Web API 项目中启用 cors?

    在我的 ASP NET Core 6 0 Web API 项目中配置了 CORS 但预检请求收到 http 405 错误 换句话说 不允许使用 HTTP OPTION 看起来 cors 没有启用 我见过的例子config EnableCor
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • += 运算符在 C++ 中是如何实现的?

    这是我一直在思考的一个问题 但从未找到任何资源来说明这个问题的答案 事实上它不仅是为了 也适用于它的兄弟姐妹 即 等等 当然不是 考虑这个例子 int a 5 a 4 this will make a 9 现在考虑等效表达式 a a 4 T
  • 多个线程访问一个变量

    我在正在读的一本教科书中发现了这个问题 下面也给出了解决方案 我无法理解最小值怎么可能是 2 为什么一个线程不能读取 0 而所有其他线程都执行并写入 1 而无论是1还是2 最后写入的线程仍然必须完成自己的循环 int n 0 int mai
  • 为什么 rand() 总是返回相同的值? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中生成随机数 https stackoverflow com questions 3067364 generating random numbers in c 使用 rand 生成随机数 http
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 禁用实体框架的默认值生成(Code First)

    我数据库中有一个列不能为空 我想将其设置为默认值在数据库中 问题是实体框架似乎自己创建了一个默认值 例如 int gt 0 并且完全忽略了数据库中的默认值约束 有没有办法禁用实体框架的默认值 我发现您可以使用以下属性来装饰您的字段 Data
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS

随机推荐

  • C++面向对象继承与多态(3)

    C 面向对象继承与多态 3 前言 多态 什么是多态 多态的条件 动态绑定的原理 为什么要使用多态 总结 前言 通过前两篇博文 我已经将多态的前提条件总结得七七八八了 这一篇开始正式展开讲多态 以及我们为什么要使用多态 多态 什么是多态 引用
  • QT获取布局器中控件的位置和大小

    在QT中 获取大小和位置有多种方式 有Size Geometry BaseSize pos Geometry rect 等等 但是这些函数都是获取控件没有布局时的位置和大小 如果控件被加入到布局管理器中 那么这些函数就获取不到位置和大小了
  • C语言指针详解(经典,非常详细)

    前言 复杂类型说明 要了解指针 多多少少会出现一些比较复杂的类型 所以我先介绍一下如何完全理解一个复杂类型 要理解复杂类型其实很简单 一个类型里会出现很多运算符 他们也像普通的表达式一样 有优先级 其优先级和运算优先级一样 所以我总结了一下
  • 华为机试:密码强度等级

    一 题目 密码按如下规则进行计分 并根据不同的得分为密码进行安全等级划分 一 密码长度 5 分 小于等于4 个字符 10 分 5 到7 字符 25 分 大于等于8 个字符 二 字母 0 分 没有字母 10 分 全都是小 大 写字 20 分
  • 判断字符串的两半是否相似

    给你一个偶数长度的字符串 s 将其拆分成长度相同的两半 前一半为 a 后一半为 b 两个字符串 相似 的前提是它们都含有相同数目的元音 a e i o u A E I O U 注意 s 可能同时含有大写和小写字母 如果 a 和 b 相似 返
  • 现代处理器性能分析及优化-序

    一直以来 工程师都有一个观念 性能为王 以前是 现在是 以后更是 根据 Data Never Sleeps 5 0 调查研究 世界上每天产生2 5万亿字节的数据 并且保持着每年25 的速度递增 在我们如今的社会生活中 信息产生的来源越来越多
  • pgbench和sysbench初次压测PG集群

    pgbench和sysbench初次压测PG集群 pgbench和sysbench是两个不同的压测工具 前者只适用于pg数据库 后者可以适用于mysql pg sql server等常见关系型数据库 若是关于tps的测试 建议采用sysbe
  • tomcat配置

    1 概念 参数名 描述 maxThreads 每一次HTTP请求到达Web服务 tomcat都会创建一个线程来处理该请求 那么最大线程数决定了Web服务容器可以同时处理多少个请求 maxThreads默认200 肯定建议增加 但是 增加线程
  • A Comprehensive Survey of Dataset Distillation

    本文是蒸馏学习综述系列的第三篇文章 A Comprehensive Survey of Dataset Distillation 的一个翻译 数据集蒸馏综述 摘要 1 引言 2 背景 2 1 形式化数据集蒸馏 3 元学习框架 3 1 通过时
  • 【自然语言处理】关系抽取 —— GDPNet 讲解

    GDPNet 论文信息 标题 GDPNet Refining Latent Multi View Graph for Relation Extraction 作者 Fuzhao Xue Aixin Sun Hao Zhang Eng Sio
  • Elasticsearch插件开发与调试

    背景 elasticsearch version 6 8 5 插件开发类型 elasticsearch 变更数据记录 插件开发 略 完善后开源 插件debug 远程debug 1 准备发行版的ES 下载 解压 2 将开发好的插件 zip包
  • Python基础知识(三):Python错误、警告、异常处理总结

    1 语法错误 Python 的语法错误或者称之为解析错 是初学者经常碰到的 如下实例 gt gt gt while True print Hello world File
  • STM32——理解中断与中断配置

    前言 本文将从 这是什么 为什么需要它 如何配置操作它 三个角度展开讨论分析 目录 中断简介 抢占优先级和子优先级 中断分组 配置要点 EXTI EXTI框图讲解 信号产生过程 编程要点 中断简介 中断 即机器运行过程中出现某些意外情况 需
  • XBOX怎么查保修期限

    网站 Microsoft 帐户 设备https account microsoft com devices fref home drawers devices manage devices refd account microsoft co
  • python实战爬取招聘网站职位数据

    大家都知道金三银四是每年的求职高峰期 是中国招聘市场中最热门的季节之一 这段时间内 许多公司会发布大量的招聘信息 吸引大批求职者前来应聘 同时 也有许多人选择这个时候跳槽 因为这个时候找到新工作的机会相对较大 python 疫情放开后感觉求
  • (websocket)协议中Ping Pong,Socket通讯ping pong(长连接),心跳包

    Socket读写数据 流Socket 数据包Socket 1 流套接字 SOCK STREAM 流套接字用于提供面向连接 可靠的数据传输服务 该服务将保证数据能够实现无差错 无重复发送 并按顺序接收 流套接字之所以能够实现可靠的数据服务 原
  • 华硕天选无法识别蓝牙

    系列文章目录 文章目录 系列文章目录 前言 一 解决 二 链接蓝牙 三 搜索蓝牙 前言 无法连接蓝牙 一 解决 电脑桌面右下角 点开 二 链接蓝牙 三 搜索蓝牙
  • sql中join与left-join图解区别

    t1表内容如下 t2表内容如下 下面来简述join和left join right join的区别 inner join select from t1 inner join t2 on t1 id t2 id 公共部分的数据才会被查询出来
  • matlab判断两个数据是否相等的相关问题

    在matlab中如何判断两个数据的值是否相等呢 我们都知道通常使用isequal 方法 调用方法如下 tf isequal A B 然而数据在什么情况下是相等的呢 我们看如下情况 x 1 38389652673674e 20 y 1 383
  • ubuntu 交叉编译qt 5.7 程序到 arm 开发板

    ubuntu 交叉编译qt 5 7 程序到 arm 开发板 平台 1 ubuntu 12 04 2 arm linux gcc 4 5 1 3 QT 5 7 4 开发板210 armcortex A8 一 概述 QT5的ARM移植及其中文显