当前位置: 首页 > news >正文

目标板UBI工具交叉编译

在目标板上使用ubifs,需要一些UBI工具,可从mtd-utils工具中得到。

在以前的文章中介绍过mtd-utils-1.2.0的交叉编译方式,但是这个版本的软件只能获得目标板的UBI工具,没有包含主机端得UBI工具。
 
mtd-1.3.0以上则包含了目标端和主机的UBI工具。主机上编译已经介绍过了,现在介绍交叉编译mtd-utils-1.4.2。
 
同样是在Fedora Core 9环境下编译。
当然,与交叉编译mtd-1.2.0一样,zlib、lzo都是不可缺少的,进行交叉编译,并安装到交叉工具链中,不再介绍。
 
交叉编译mtd-1.4.2还需要uuid,uuid包含在e2fsprogs软件包中,所以下载进行交叉编译。
 
----------------------------------------------------------------------------------
 
下载e2fsprogs:
wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.14.tar.gz
 
交叉编译脚本:
./configure --host=arm-vfp-linux --enable-elf-shlibs \
        --prefix=/opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/
make
make install
mkdir /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/include/uuid
cp lib/uuid/uuid.h /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/include/uuid/
 
安装libuuid以及uuid.h文件。
 
------------------------------------------------------------------------------------
 
下载mtd-utils-1.4.2
wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.4.2.tar.bz2
 
交叉编译:
make CROSS=arm-vfp-linux-gnu- WITHOUT_XATTR=1
 
编译中会出现一些错误,可以不用理会。在arm-vfp-linux-gnu目录下生成了flash_erase等工具。
说明,没有了flash_eraseall工具,已经被flash_erase替代了。
 
将arm-vfp-linux-gnu/lib目录下的libmtd.a复制到交叉工具链目录:
sudo cp libmtd.a /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/lib
 
进入ubi-utils目录,输入
make CROSS=arm-vfp-linux-gnu-
在rm-vfp-linux-gnu目录下会生成ubimkvol/ubiattachden等在目标板上用的工具。
 
----------------------------------------------------------------------------------------
下面给出一个更简单的办法,无需交叉编译e2fsprogs:
 
由于仅限于在目标板上使用,目标板上一般无需mkfs.ubifs这样的工具,所以可以不用编译这个目录,直接在Makefile中修改,去掉mkfs.ubifs目录:
#SUBDIRS = lib ubi-utils mkfs.ubifs
SUBDIRS = lib ubi-utils
 
去掉与jffs2相关的项。
make CROSS=arm-vfp-linux-gnu- WITHOUT_XATTR=1
make CROSS=arm-vfp-linux-gnu- -C ubi-utils
 
 
然后输入:
make CROSS=arm-vfp-linux-gnu- WITHOUT_XATTR=1
就可以了。在编译中会出现jffs2相关的错误,如果不希望看到这些错误的话,可以在Makefile中将与jffs2相关的项去掉即可。
 
 
编译完毕,在arm-vfp-linux-gnu目录下生成flash_erase等工具,在arm-vfp-linux-gnu/lib目录下生成libmtd库,将libmtd.a复制到交叉工具链目录。
 
然后进入ubi-utils目录,输入make CROSS=arm-vfp-linux-gnu-就可以了。

相关文章:

  • 一个web项目web.xml的配置中context-param配置作用
  • Puppet安装dashboard
  • 非常有用的并发控制-循环栅栏CyclicBarrier
  • PHP简易的缓存实现思路
  • Ubuntu下安装Cacti+rrdtool监控Windows
  • 整理:IE6浏览器下容器boder消失的解决办法
  • 有向无环图
  • linux服务器集群运维经验
  • jsbeautifier + JScript.NET/JavaScript 编程实现 JavaScript、HTML、CSS 代码格式化脚本命令行工具 并集成到 EditPlus...
  • Python实现简单接口自动化测试
  • Codeforces Round #428 (Div. 2)
  • 【转】搜索算法的剪枝优化
  • vue.js过渡效果之--javascript钩子
  • 吓死猪队友 只用命令行登录Windows就问你怕不怕!
  • 从零开始学习Sencha Touch MVC应用之十四
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Create React App 使用
  • nodejs实现webservice问题总结
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Vue 动态创建 component
  • 大快搜索数据爬虫技术实例安装教学篇
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 理解在java “”i=i++;”所发生的事情
  • 利用jquery编写加法运算验证码
  • 微信小程序实战练习(仿五洲到家微信版)
  • 我是如何设计 Upload 上传组件的
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #{}和${}的区别是什么 -- java面试
  • #if 1...#endif
  • %check_box% in rails :coditions={:has_many , :through}
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)Neo4j下载安装以及初次使用
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)EXC_BREAKPOINT僵尸错误
  • 、写入Shellcode到注册表上线
  • .Net 6.0 处理跨域的方式
  • .Net 8.0 新的变化
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET开发人员必知的八个网站
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET中 MVC 工厂模式浅析
  • @Transactional 详解
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [Codeforces] combinatorics (R1600) Part.2
  • [Linux] CE知识随笔含Ansible、防火墙、VIM、其他服务