Arm-Linux 移植 mtd-utils 1.x
有关文章:《mtd-utils 的 使用》
背景:
关于在公司的生产环境有关。不希望每次都在uboot下面做nand flash 的烧写;也觉得使用U盘升级的方法比较慢,而且有关的驱动不是我写的,不希望受制于人。还是希望在Linux下面比较通用。
要求: 根据本文进行操作时,需要明确清楚各个部分的烧写地址和大小。
一个脚本解决所有的事情
##
# Copyright By Schips, All Rights Reserved
# 自定义变量
OUTPUT_PATH=`pwd`/install
ARM_GCC=arm-hisiv500-linux-gcc
BASE=`pwd`
ZLIB=zlib-
MTD_UTILS=mtd-utils-
LZO=lzo-2.08
E2FSPROGS=e2fsprogs-
make_dirs () {
#为了方便管理,创建有关的目录
cd ${BASE} && mkdir compressed install source -p
}
download_package () {
cd ${BASE}/compressed
#wget -c https://www.zlib.net/${ZLIB}.tar.gz
#wget -c http://www.oberhumer.com/opensource/lzo/download/${LZO}.tar.gz
# 注意下面这行的网址
#wget -c https://jaist.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/1.41.14/${E2FSPROGS}.tar.gz
#wget -c ftp://ftp.infradead.org/pub/mtd-utils/${MTD_UTILS}.tar.bz2
}
tar_package () {
cd ${BASE}/compressed
#解压下载的包
tar -C ../source -xf ${ZLIB}.tar.gz
tar -C ../source -xf ${LZO}.tar.gz
tar -C ../source -xf ${E2FSPROGS}.tar.gz
tar -C ../source -xf ${MTD_UTILS}.tar.bz2
}
#编译
# 有些人喜欢把交叉库编译到工具链中以简化编译的操作步骤,本人觉得这样的做法是非常错误的。(会对工具链造成污染)
make_zlib () {
# 编译安装 zlib
cd ${BASE}/source/${ZLIB}
echo "ZLIB ABOUT"
CC=${ARM_GCC} ./configure --prefix=${OUTPUT_PATH}/${ZLIB}
make && make install
}
make_lzo () {
# 编译安装 lzo
cd ${BASE}/source/${LZO}
echo "LZO ABOUT"
CC=${ARM_GCC} ./configure --host=arm-linux --prefix=${OUTPUT_PATH}/${LZO}
make && make install
}
make_e2fsprogs () {
# 编译安装 e2fsprogs
cd ${BASE}/source/${E2FSPROGS}
echo "E2FSPROGS ABOUT"
CC=${ARM_GCC} ./configure --host=arm-linux --enable-elf-shlibs --prefix=${OUTPUT_PATH}/${E2FSPROGS}
make && make install-libs
mkdir ${OUTPUT_PATH}/${E2FSPROGS}/include/uuid -p
cp lib/uuid/uuid.h ${OUTPUT_PATH}/${E2FSPROGS}/include/uuid
}
make_mtd_utils () { # 编译安装 mtd-utils
cd ${BASE}/source/${MTD_UTILS}
echo "MTD ABOUT"
# 下面4行修复了mtd编译的一些问题
sed -r -i "/LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid/ s/.*/LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid \$(ZLIBLDFLAGS) \$(LZOLDFLAGS) \$(UUIDLDLIBS)/g" Makefile
sed -r -i "/#include <uuid\/uuid.h>/ s/.*/#include \"uuid\/uuid.h\"/g" mkfs.ubifs/mkfs.ubifs.h
mkdir mkfs.ubifs/uuid -p
cp ${BASE}/source/${E2FSPROGS}/lib/uuid/uuid.h mkfs.ubifs/uuid/uuid.h
export CROSS=arm-hisiv500-linux-
export DESTDIR=${OUTPUT_PATH}/mtd-utils
export ZLIBCPPFLAGS=-I${OUTPUT_PATH}/${ZLIB}/include
export LZOCPPFLAGS="-I${OUTPUT_PATH}/${LZO}/include -I{$OUTPUT_PATH}/${E2FSPROGS}/include/"
export ZLIBLDFLAGS=-L${OUTPUT_PATH}/${ZLIB}/lib
export LZOLDFLAGS=-L${OUTPUT_PATH}/${LZO}/lib
export UUIDLDLIBS=-L${OUTPUT_PATH}/${E2FSPROGS}/lib
}
make_dirs#download_packagetar_package
make_zlib
make_lzo
make_e2fsprogs
make_mtd_utils
mtd-utils:
make 后 :mtd-utilsg工具链将会在当前目录下$CROSS目录生成
make install后 :make生成的结果将安装到DESTDIR目录下
* 如果 make install 失败,手动在 $CROSS 文件名的目录下就可以找到编译的结果

拷贝需要的程序和库即可
mtd-utils 2.0版本的编译: https://blog.csdn.net/liyangzmx/article/details/93901411
(注:本人尝试过2.x版本的编译,但是失败了。)
Arm-Linux 移植 mtd-utils 1.x的更多相关文章
- arm linux 移植 x265
背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...
- Linux 安装 go 以及 arm linux 移植 go
背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...
- arm linux 移植 MQTT (paho、mosquitto)
前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...
- arm linux 移植 ffmpeg 库 + x264
背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...
- arm linux 移植 PHP
背景: PHP 是世界上最好的语言. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 php :7.1.30 zlib :1.2.11 libxml ...
- arm linux 移植支持 HP打印机
背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...
- arm linux 移植 gdb/gdbserver
背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...
- arm linux 移植 udhcp 与 使用
背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...
- arm linux 移植 rsync
背景: 在产品开发中可以使用rsync进行大文件的拷贝,断点续传. host平台 :Ubuntu 16.04 arm平台 : 3531d rsync :3.1.3 arm-gcc :4.9.4 ...
- arm linux 移植 jpeg
背景: host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚本: ## # Copyright By Sc ...
随机推荐
- RTSP、RTMP、HTTP协议
一.异同1.RSTP.RTMP.HTTP协议共同点RTSP RTMP HTTP都是用在应用层.理论上这三种协议都可以做直播和点播,但直播一般用RTSP和RTMP点播用HTTP.2.RSTP.RTMP. ...
- 【转】暴力破解无线WiFi密码
# coding:utf-8 import pywifi from pywifi import const import time from asyncio.tasks import sleep cl ...
- 手机wifi连上Fiddler后无网络问题解决
早上老板交代一个任务,对一款app抓包分析下接口调用的时延.我的重新打开了一年多前用过的Fiddler(参见win10笔记本用Fiddler对手机App抓包),拿过测试手机开始设置wifi代理地址和端 ...
- java连接数据库失败:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
说一下我的情况: 在测试环境中运行没有任何问题,但是导出war包之后,就将war包上传到线上服务器的webapps目录下,然后启动Tomcat,等待Tomcat将上传的war包解压(此时Tomcat没 ...
- 【Linux】Jenkins以war包运行及开机启动配置(四)
本例介绍jenkins已war包运行及开机启动配置 环境:Linux环境(CentOS 7.4) 以war包运行 1.下载jenkins.war包 2.启动war包( 默认端口:8080,默认JENK ...
- 【PHP】php7.2报错The each() function is deprecated. This message will be suppressed on furthe
php7.2以上 废除了 each()方法,项目中用到的地方会出现以下报错 The each() function is deprecated. This message will be suppre ...
- 利用cglib给javabean动态添加属性,不用在建VO
有的时候 比如你用的是hibernate或者Spring jdbc 来做dao层进行数据库相关的操作的时候,若果是单表的操作的时候 还比较简单 hibernate可直接返回(get,load)你的需要 ...
- 【超分辨率】—图像超分辨率(Super-Resolution)技术研究
一.相关概念 1.分辨率 图像分辨率指图像中存储的信息量,是每英寸图像内有多少个像素点,分辨率的单位为PPI(Pixels Per Inch),通常叫做像素每英寸.一般情况下,图像分辨率越高,图像中包 ...
- [ kvm ] 学习笔记 3:KVM 基础功能详解
1. 构建 KVM 环境 KVM 从诞生开始就需要硬件虚拟化的支持,KVM 必需的硬件虚拟化扩展分别是:Intel 的虚拟化技术(Intel VT)和 AMD 的 AMD-V 技术.首先处理器(CPU ...
- ubuntu下vs code配置c++
链接地址:https://blog.csdn.net/u010648921/article/details/82628616 摘要:Ctrl+Shift+B, F5