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

编译mtd-utils(使用uclibc编译)

目录

1、Build Zlib: zlib-1.2.11.tar.gz

(1)tar -xvf ~/download/zlib-1.2.11.tar.gz

(2)cd zlib-1.2.11/

(3)./configure --prefix=`pwd`/../__install/

(4)Change Makefile:修改Makefile -:删除 +:增加

(5)make

(6)make install

二、Build LZO: lzo-2.10.tar.gz

(1)tar -xvf ~/download/lzo-2.10.tar.gz

(2)cd lzo-2.10/  

(3)./configure --host=mips-linux-gnu --prefix=`pwd`/../__install/    

(4)vi Makefile(添加  -muclibc):

(5)make     

(6)make install

三、Build e2fsprogs: e2fsprogs-1.45.2.tar.gz

(1)tar -xvf e2fsprogs-1.45.2.tar.gz    

(2)cd e2fsprogs-1.45.2/    

(3)./configure --host=mips-linux-gnu --prefix=`pwd`/../__install    

(4)vi Makefile:

 (5)vi lib/uuid/gen_uuid.c

(6)make    

(7)make install-libs

四、Build mtd-utils: mtd-utils-2.1.0.tar.bz2    

(1)tar -xvf mtd-utils-2.1.0.tar.bz2    

(2)cd mtd-utils-2.1.0/    

(3)export PKG_CONFIG_PATH=`pwd`/../__install/lib/pkgconfig/

(4)export PREFIX=`pwd`/../__install

(5)执行

(6)vi Makefile:

(7)vi ubifs-utils/mkfs.ubifs/mkfs.ubifs.h

(8)vi include/config.h

(9)vi tests/fs-tests/integrity/integck.c

 (10) vi tests/mtd-tests/flash_speed.c

(11)make    

(12)make install

编译结束!!


所需文件:

从720工具链中mips-gcc720-glibc229-r5.1.4/mips-linux-gnu/libc/uclibc/lib复制两个库文件(ld-uClibc-mipsn8.so.0、libc.so.0)到库文件系统的/lib下(mtd-utils-2.1.0/lib/)

mtd-utils的交叉编译,压缩包中是已经使用720工具链交叉编译好的,可直接使用,也可自己编译,方法参考如下:


1、Build Zlib: zlib-1.2.11.tar.gz

(1)tar -xvf zlib-1.2.11.tar.gz

(2)cd zlib-1.2.11/

(3)

./configure --prefix=`pwd`/../__install/

(4)Change Makefile:修改Makefile -:删除 +:增加

        --- a/Makefile
        +++ b/Makefile
        @@ -16,7 +16,7 @@
         # To install in $HOME instead of /usr/local, use:
         #    make install prefix=$HOME

        -CC=gcc
        +CC=mips-linux-gnu-gcc
 
         -CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
        +CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -muclibc
        #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
        CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
         SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
         -LDFLAGS=
        +LDFLAGS=-muclibc
         TEST_LDFLAGS=-L. libz.a
        -LDSHARED=gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
        -CPP=gcc -E
        +LDSHARED=mips-linux-gnu-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
        +CPP=mips-linux-gnu-gcc -E

         STATICLIB=libz.a
         SHAREDLIB=libz.so
         SHAREDLIBV=libz.so.1.2.11
         SHAREDLIBM=libz.so.1
         LIBS=$(STATICLIB) $(SHAREDLIBV)

        -AR=ar
        +AR=mips-linux-gnu-ar
        ARFLAGS=rc
        -RANLIB=ranlib
        +RANLIB=mips-linux-gnu-ranlib
         LDCONFIG=ldconfig
         LDSHAREDLIBC=-lc
        TAR=tar

(5)make

(6)make install

二、Build LZO: lzo-2.10.tar.gz

(1)tar -xvf lzo-2.10.tar.gz

(2)cd lzo-2.10/  

(3)

./configure --host=mips-linux-gnu --prefix=`pwd`/../__install/  

(4)vi Makefile(添加  -muclibc):

         371: +CFLAGS = -g -O2 -muclibc
         373:+CPPFLAGS = -muclibc
         393:+LDFLAGS = -muclibc

(5)make     

(6)make install

三、Build e2fsprogs: e2fsprogs-1.45.2.tar.gz

(1)tar -xvf e2fsprogs-1.45.2.tar.gz    

(2)cd e2fsprogs-1.45.2/    

(3)

./configure --host=mips-linux-gnu --prefix=`pwd`/../__install

(4)vi Makefile:

         96: +CFLAGS = -g -O2 -muclibc
         99:+CPPFLAGS = -I. -I$(top_builddir)/lib -I$(top_srcdir)/lib -muclibc
        103:+LDFLAGS = $(SANITIZER_LDFLAGS) -muclibc 

 (5)vi lib/uuid/gen_uuid.c

        356     if (state_fd >= 0) {
        357         unsigned int cl;
        358         unsigned long tv1, tv2;
        359         int a;
        360
        361 /*      if (fscanf(state_f, "clock: %04x tv: %lu %lu adj: %d\n",
        362                &cl, &tv1, &tv2, &a) == 4) {
        363             clock_seq = cl & 0x3FFF;
        364             last.tv_sec = tv1;
        365             last.tv_usec = tv2;
        366             adjustment = a;
        367         }*/  /**注释if**/
        368     }    

(6)make    

(7)make install-libs

四、Build mtd-utils: mtd-utils-2.1.0.tar.bz2    

(1)tar -xvf mtd-utils-2.1.0.tar.bz2    

(2)cd mtd-utils-2.1.0/    

(3)

export PKG_CONFIG_PATH=`pwd`/../__install/lib/pkgconfig/

(4)

export PREFIX=`pwd`/../__install

(5)执行

./configure --host=mips-linux-gnu CC=mips-linux-gnu-gcc --prefix=${PREFIX} WITHOUT_XATTR=1 LDFLAGS=-L${PREFIX}/lib CFLAGS='-I${PREFIX}/include -I${PREFIX}/include/lzo -I${PREFIX}/include/uuid/ -g -O2' UUID_CFLAGS='-I${PREFIX}/include/uuid/' LZO_CFLAGS='-I${PREFIX}/include/' ZLIB_CFLAGS='-I${PREFIX}/include' --without-crypto

(6)vi Makefile:

1205: +CFLAGS = -I${PREFIX}/include -I${PREFIX}/include/lzo -I${PREFIX}/include/uuid/ -g -O2 -muclibc
1209:+CPPFLAGS = -muclibc
1229:+LDFLAGS = -L/home/user/yqhuang/QS/1.1.4/mtd-utils-2.1.0/../__install//lib -muclibc

(7)vi ubifs-utils/mkfs.ubifs/mkfs.ubifs.h

        #include <ctype.h>
        #include <uuid.h>
        #include <sys/file.h>

        +#ifdef WITH_CRYPTO
        #include <openssl/rand.h>
        +#endif

        #include <mtd/ubifs-media.h>

(8)vi include/config.h

4 /* Define to 1 if you have the `clock_gettime' function. */
5 #define HAVE_CLOCK_GETTIME 1
6
7 /* Define to 1 if you have the <dlfcn.h> header file. */
8 #define HAVE_DLFCN_H 1
9
10 /* Define to 1 if you have the <execinfo.h> header file. */
11 //#define HAVE_EXECINFO_H 1                            /***改动(注释掉)****/
12
13 /* Define to 1 if you have the <inttypes.h> header file. */
14 #define HAVE_INTTYPES_H 1
15
16 /* Define to 1 if you have the <memory.h> header file. */
17 #define HAVE_MEMORY_H 1

(9)vi tests/fs-tests/integrity/integck.c

        2877         else if (!strcmp(opt, "ro"))
        2878             fsinfo.mount_flags |= MS_RDONLY;
        2879     //  else if (!strcmp(opt, "dirsync"))         /***注释掉***/
        2880     //      fsinfo.mount_flags |= MS_DIRSYNC;       /***注释掉***/
        2881         else if (!strcmp(opt, "noatime"))
        2882             fsinfo.mount_flags |= MS_NOATIME;
        2883         else if (!strcmp(opt, "nodiratime"))
        2884             fsinfo.mount_flags |= MS_NODIRATIME;
        2885         else if (!strcmp(opt, "noexec"))
        2886             fsinfo.mount_flags |= MS_NOEXEC;
        2887         else if (!strcmp(opt, "nosuid"))
        2888             fsinfo.mount_flags |= MS_NOSUID;
        2889     //  else if (!strcmp(opt, "relatime"))          /***注释掉***/
        2890     //      fsinfo.mount_flags |= MS_RELATIME;     /***注释掉***/
        2891         else if (!strcmp(opt, "sync"))
        2892             fsinfo.mount_flags |= MS_SYNCHRONOUS;

 (10) vi tests/mtd-tests/flash_speed.c

        261 static void start_timing(void)
        262 {
        263     clock_gettime(CLOCK_MONOTONIC, &start);      /***改动***/
        264 }
        265
        266 static void stop_timing(void)
        267 {
        268     clock_gettime(CLOCK_MONOTONIC, &finish);    /***改动***/
        269 }

(11)make    

(12)make install


编译结束!!

查看分区:cat /proc/mtd

查看挂接主次设备号:cat /proc/partitions
擦除要烧写的分区:
flash_eraseall /dev/mtd5

nandwrite烧写(先擦除烧写的分区):
./nandwrite -a /dev/mtd5 data.img

flashcp烧写到分区:
./flashcp -v data.img /dev/mtd5

(PS:nandwrite、flash_eraseall等执行文件位于__install/sbin文件夹下)

相关文章:

  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • springboot网络安全考核平台设计毕业设计源码042335
  • 神经网络常用的训练方式,人工神经网络训练过程
  • WebSocket快速入门及基本使用
  • 牛视源码定制,抖音矩阵系统,别和谐啊、、、
  • 深度神经网络的可解释性,深度神经网络简单介绍
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • 海川QK1209 低压按键台灯充电 LED 驱动 IC- 昱灿电子
  • 受邀参加中日韩创新人才主题交流研讨会
  • 优炫软件董事长梁继良当选新一届北京市商会副会长
  • 5G与UWB定位技术融合的四种方式
  • 企业为什么难创新?5个常见的创新障碍
  • leetcode:762. 二进制表示中质数个计算置位
  • PASCAL VOC数据集格式文件夹下文件配置
  • Sulfo-Cy3 羧酸,Sulfo-Cy3 carboxylic acid,水溶性Cy3荧光染料标记羧酸
  • C++入门教程(10):for 语句
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS 三角实现
  • Gradle 5.0 正式版发布
  • Kibana配置logstash,报表一体化
  • leetcode388. Longest Absolute File Path
  • Mocha测试初探
  • Python学习笔记 字符串拼接
  • swift基础之_对象 实例方法 对象方法。
  • vue脚手架vue-cli
  • 闭包--闭包作用之保存(一)
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从setTimeout-setInterval看JS线程
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 嵌入式文件系统
  • 正则表达式
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #DBA杂记1
  • #考研#计算机文化知识1(局域网及网络互联)
  • (1)常见O(n^2)排序算法解析
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (八十八)VFL语言初步 - 实现布局
  • (南京观海微电子)——COF介绍
  • (转)visual stdio 书签功能介绍
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .describe() python_Python-Win32com-Excel
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET与 java通用的3DES加密解密方法
  • .net中应用SQL缓存(实例使用)
  • @media screen 针对不同移动设备
  • [ 转载 ] SharePoint 资料
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票