当前位置:必发365电子游戏 > 操作系统 > 去164行改你的交叉编译工具
去164行改你的交叉编译工具
2019-12-19

BusyBox 简化嵌入式 Linux 系统

为小情状计划的叁个小工具包

M. Tim Jones (mtj@mtjones.com卡塔尔(قطر‎, 咨询技术员, Emulex

必发365bifa0000 1

Tim Jones 是一名嵌入式软件技术员,他是 GNU/Linux Application ProgrammingAI Application Programming 以及 BSD Sockets Programming from a Multilanguage Perspective 等书的编辑者。他的工程背景特别遍布,从同步宇宙飞船的基本开垦到嵌入式布局划设想计,再到互联网契约的成本。Tim是献身美利哥亚拉巴马州 Longmont 的 Emulex Corp. 的一名顾问程序员。
(An IBM developerWorks Contributing Author)

 

简介: BusyBox 是很多正经 Linux® 工具的叁个单个可执行落到实处。BusyBox满含了有的简短的工具,举例 cat 和 echo,还满含了生机勃勃部分更加大、更头眼昏花的工具,比如 grep、find、mount 以至telnet(可是它的选项比古板的本子要少);某一个人将 BusyBox 称为 Linux 工具里的Switzerland军刀。本文将探讨 BusyBox的指标,它是哪些做事的,甚至为啥它对于内部存款和储蓄器有限的蒙受来讲是那般重大。

公布日期: 2006 年 9 月 11 日 级别: 初级 访谈情形 : 29282 次浏览 评论: 0 (查看 | 加上评价 - 登录)

必发365bifa0000 2 平均分 (73个评分) 为本文评分

 

BusyBox 的诞生

BusyBox 最早是由 Bruce Perens 在 1997 年为 Debian GNU/Linux 安装盘编写的。其指标是在一张软盘上开创二个可携带的 GNU/Linux 系统,那能够用作安装盘和急救盘。一张软盘可以保留差不离 1.4-1.7MB 的内容,由此这里未有微微空间留给 Linux 内核以致有关的客商应用程序使用。

  1. 好了, 上面初叶作死.去busybox.net 下载最新的1.26.0, 小白都能看懂 的一步一步截图教程.

BusyBox 许可证

BusyBox 是安分守纪 GNU General Public License(GPL)许可证发行的。那象征假如大家在叁个门类中央银行使 BusyBox,就一定要信守这几个执照。大家可以在 BusyBox Web 站点(请参见本文后边 参谋资料 意气风发节的内容)上看出这么些许可证的剧情。Busy博克斯团队好似正马不停蹄监视违反这么些执照的状态。实际上,他们保险了叁个 “Hall of Shame” 页面来评释违反者的景况。

BusyBox 揭破了这么多个事实:超多专门的学问 Linux 工具都得以分享很多联机的要素。举例,超多依照文件的工具(比方 grepfind)都亟待在目录中检索文件的代码。当那些工具被统风流倜傥到三个可执路程序中时,它们就足以分享这一个相像的成分,那样能够发生越来越小的可执路程序。实际上,BusyBox能够将大要 3.5MB 的工具打包成大概 200KB 大小。那就为可指引的磁盘和行使 Linux 的嵌入式设备提供了越多效果与利益。大家能够对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。

BusyBox 是怎么着工作的?

为了让二个可执路程序看起来就如相当多可推行程序相近,BusyBox 为传送给 C 的 main 函数的参数开辟了三个超级少使用的风味。回看一下 C 语言的 main 函数的定义如下:

必发365bifa0000 3

POSIX 环境

尽管 BusyBox 的目标 是提供叁个一定完整的 POSIX(可移植操作系统接口)情形,这是叁个愿意,并非大器晚成种要求。那些工具即使并不完全,可是它们提供了小编们期待的主要性作用。

清单 1. C 的 main 函数

int main( int argc, char *argv[] )

在此个定义中,argc 是传递进入的参数的个数(参数数量),而 argv 是四个字符串数组,代表从命令行传递步入的参数(参数向量)。argv 的目录 0 是从命令行调用的前后相继名。

清单 2 给出的那一个大约 C 程序展现了 BusyBox 的调用。它只简单地打字与印刷 argv 向量的开始和结果。

清单 2. BusyBox 使用 argv[0] 来明确调用哪个应用程序

// test.c
#include <stdio.h>

int main( int argc, char *argv[] )
{
  int i;

  for (i = 0 ; i < argc ; i++) {
    printf("argv[%d] = %sn", i, argv[i]);
  }

  return 0;
}

调用这几个程序会彰显所调用的首先个参数是该程序的名字。大家得以对这些可执路程序重新开展命名,当时再调用就能够得到该程序的新名字。别的,大家得以创建四个到可执路程序的暗号链接,在施行那个符号链接时,就足以见见这些标识链接的名字。

清单 3. 在应用新命令更新 Busy博克斯 之后的授命测验

$ gcc -Wall -o test test.c
$ ./test arg1 arg2
argv[0] = ./test
argv[1] = arg1
argv[2] = arg2

$ mv test newtest
$ ./newtest arg1
argv[0] = ./newtest
argv[1] = arg1

$ ln -s newtest linktest
$ ./linktest arg
argv[0] = ./linktest
argv[1] = arg

BusyBox 使用了标志链接以便使三个可执路程序看起来像好些个程序肖似。对于 BusyBox中带有的每种工具以来,都会那样创立贰个符号链接,那样就足以选取这个标志链接来调用 BusyBox 了。BusyBox 然后方可通过 argv[0] 来调用内部工具。


回页首

结构并编写翻译 BusyBox

大家能够从 Busy博克斯 的 Web 站点上下载最新版本的 BusyBox(请参谋 参照他事他说加以考察资料 焕发青大年的内容)。与超多开放源码程序同样,它是以三个压缩的 tarball 方式表露的,我们能够动用清单 4 给出的吩咐将其转移王炯代码树。(假设大家下载的版本不是 1.1.1,那就请在这里个命令中应用方便的版本号以致特定于那个版本号的命令。)

清单 4. 展开 BusyBox

$ tar xvfz busybox-1.1.1.tar.gz
$

结果会转换叁个目录,名称为 busybox-1.1.1,个中蕴藏了 BusyBox的源代码。要编写翻译暗中同意的布局(当中包蕴了差十分的少具有的原委,并禁止使用了调度效率),请使用 defconfig make 目标:

必发365bifa0000,Paste_Image.png

BusyBox 源代码树

BusyBox的源代码树组织得很好。那些工具都依据它们的用处进行了归类,并蕴藏在单独的子目录中。举个例子,网络工具和护理进度(如 httpdifconfig 等)都在 ./networking 目录中;典型的模块工具(满含 insmodrmmodlsmod)都在 ./modutils 目录中;编辑器(例如 vi 和流编辑器,如 awksed)都在 ./editors 目录中。makefile 配置、编写翻译和装置所利用的逐个文书档案都在此个目录树的根目录中。

事项清单 5. 编写翻译默许的 Busy博克斯 配置

$ cd busybox-1.1.1
$ make defconfig
$ make
$

结果是三个一点都超级大的 BusyBox印象,可是那只是初始接受它的最简便易行的措施。大家能够直接调用那个新印象,那会时有发生多少个轻易易行的 Help 页面,里面包涵近年来安排的指令。要对那些印象实行测验,我们也足以对贰个指令调用 BusyBox 来施行,如清单 6 所示。

项目清单 6. 出示 BusyBox 命令的推行和 BusyBox 中的 ash shell

$ ./busybox pwd
/usr/local/src/busybox-1.1.1
$ ./busybox ash
/usr/local/src/busybox-1.1.1 $ pwd
/usr/local/src/busybox-1.1.1
/usr/local/src/busybox-1.1.1 $ exit
$

在这里个事例中,我们调用了 pwd(打字与印刷专业目录)命令,使用 BusyBox 踏入了 ash shell,并在 ash 中调用了 pwd


回页首

手工业配置

尽管你正在营造四个享有特殊供给的嵌入式设备,那就可以手工业使用 menuconfig make 目的来计划 BusyBox 的剧情。假如你熟悉 Linux 内核的编译进度,就可以静心到 menuconfig 与结构 Linux 内核的剧情所采用的目的生龙活虎致。实际上,它们都采纳了同等的基于 ncurses 的应用程序。

行使手工配置,我们能够钦命在最后的 BusyBox印象中包蕴的指令。大家也得以对 BusyBox 碰着张开安插,举个例子包罗对 NSA(美国国家安全代理)的安全升高Linux(SELinux),钦赐要动用的编写翻译器(用来在嵌入式境况中展开接力编写翻译)以至BusyBox 应该静态编译依旧动态编写翻译。图 1 提交了 menuconfig 的主分界面。在那处我们应有能够见见可以为 BusyBox配置的不相同种类的应用程序(applet)。

图 1. 使用 menuconfig 配置 BusyBox 必发365bifa0000 4

  1. 解压后

多系统布局帮忙

能够回顾地为 BusyBox 钦点交叉编写翻译器意味着大家得感到好多系统构造编写翻译BusyBox。要为您的靶子种类构造编译BusyBox,我们要求一个交叉编写翻译器和一个已经为一定指标系列结构编写翻译好的 C 库(uClibc 或 glibc)。

要手工业配置 Busy博克斯,请使用下边包车型大巴通令:

项目清单 7. 手工业配置 Busy博克斯

$ make menuconfig
$ make
$

这为大家提供了足以调用的 BusyBox 的二进制文件。下三个步骤是围绕 BusyBox创设三个条件,蕴涵将标准 Linux 命令重定向到 BusyBox二进制文件的号子链接。大家得以接受上面包车型地铁下令轻便地做到那一个进度:

清单 8. 构建 BusyBox 环境

$ make install
$

私下认可意况下,那会创设二个新的地头子目录 _install,个中含有了主旨的 Linux 景况。在这里个根目录中,您会找到一个链接到 BusyBox 的 linuxrc 程序。这个 linuxrc 程序在构建筑和安装装盘或急救盘(允许提前开展模块化的指引)时充裕管用。同样是在此个根目录中,还应该有三个分包操作系统二进制文件的 /sbin 子目录。还应该有叁个满含客户二进制文件的 /bin 目录。在塑造软盘发行版或嵌入式初阶 RAM 磁盘时,大家能够将这么些 _install 目录迁移到指标情形中。大家还足以利用 make 程序的 PREFIX 选项将设置目录重定向到别的岗位。举个例子,下边包车型客车代码就应用 /tmp/newtarget 根目录来设置那一个标识链接,并不是行使 ./_install 目录:

清单 9. 将标记链接安装到其余叁个目录中

$ make PREFIX=/tmp/newtarget install
$

使用 install make 目的成立的标识链接都来源于于 busybox.links 文件。那几个文件是在编写翻译 BusyBox时成立的,它包涵了早就配备的命令清单。在实行 install 时,就能够检查 busybox.links 文件规定要创建的暗记链接。

到 BusyBox 的命令行链接也得以利用 BusyBox在运作时动态创建。CONFIG_FEATURE_INSTALLER 选项就足以启用这几个特点,在运行时能够那样进行:

清单 10. 在运维时创建命令链接

$ ./busybox --install -s
$

-s 选项逼迫创制那些标志链接(否则就创立硬链接)。那几个选项供给系统中设有 /proc 文件系统。


回页首

BusyBox 编写翻译选项

BusyBox 包蕴了多少个编译选项,能够扶助为大家编写翻译和调节和测验精确的 BusyBox。

表 1. 为 BusyBox 提供的多少个 make 选项

make 目标 说明
help 显示 make 选项的完整列表
defconfig 启用默认的(通用)配置
allnoconfig 禁用所有的应用程序(空配置)
allyesconfig 启用所有的应用程序(完整配置)
allbareconfig 启用所有的应用程序,但是不包括子特性
config 基于文本的配置工具
menuconfig N-curses(基于菜单的)配置工具
all 编译 BusyBox 二进制文件和文档(./docs)
busybox 编译 BusyBox 二进制文件
clean 清除源代码树
distclean 彻底清除源代码树
sizes 显示所启用的应用程序的文本/数据大小

在概念配置时,大家只需求输入 make 就足以真正编写翻译 BusyBox二进制文件。比方,要为全部的应用程序编译BusyBox,大家得以实行上面的授命:

清单 11. 编写翻译 Busy博克斯 二进制造进度序

$ make allyesconfig
$ make
$

回页首

压缩 BusyBox

假如你极度关心对 BusyBox 影象的压缩,就需求深深记住两件工作:

  1. 永久不要编写翻译为静态二进制文件(那会将装有供给的库都包蕴到影像文件中)。相反,假如我们是编写翻译为叁个分享影象,那么它会接收别的应用程序使用的库(举例 /lib/libc.so.X)。
  2. 动用 uClibc 实行编译,那是三个对大小举办过优化的 C 库,它是为嵌入式系统开拓的;而不要使用专门的职业的 glibc (GNU C 库)来编写翻译。

回页首

Busy博克斯 命令中辅助的选项

BusyBox中的命令并不支持具备可用选项,不过这一个命令都包括了常用的选项。假若大家须要驾驭叁个限令能够接济什么选项,能够运用 --help 选项来调用那几个命令,如清单 12 所示。

项目清单 12. 选择 --help 选项调用命令

$ ./busybox wc --help
BusyBox v1.1.1 (2006.04.09-15:27+0000) multi-call binary

Usage: wc [OPTION]... [FILE]...

Print line, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. With no FILE, read standard input.

Options:
    -c  print the byte counts
    -l  print the newline counts
    -L  print the length of the longest line
    -w  print the word counts

$

那么些特定的数目独有在启用了 CONFIG_FEATURE_VERBOSE_USAGE 选项时才足以利用。若无这一个选项,大家就无法得到这么些详细数据,不过那样能够节省大约13 KB 的上空。


回页首

向 BusyBox 中增加新命令

向 Busy博克斯增多三个新命令特别轻易,那是因为它兼具天时地利定义的种类布局。第多少个步骤是为新命令的源代码接受二个地点。大家要依附指令的档期的顺序(互连网,shell 等)来抉择地方,并与别的命令保持风流倜傥致。这点拾叁分主要,因为这一个新命令最后会在 menuconfig 的布署菜单中冒出(在底下的事例中,是 Miscellaneous Utilities 菜单)。

对此这些事例来讲,作者将那几个新命令称为 newcmd,并将它放到了 ./miscutils 目录中。那一个新命令的源代码如清单 13 所示。

清单 13. 合生龙活虎到 BusyBox 中的新命令的源代码

#include "busybox.h"

int newcmd_main( int argc, char *argv[] )
{
  int i;

  printf("newcmd called:n");

  for (i = 0 ; i < argc ; i++) {

    printf("arg[%d] = %sn", i, argv[i]);

  }

  return 0;
}

接下去,大家要将那些新命令的源代码加多到所选子目录中的 Makefile.in 中。在本例中,笔者更新了 ./miscutils/Makefile.in 文件。请根据字母顺序来增加新命令,以便保险与现成命令的黄金年代致性:

项目清单 14. 将指令增多到 Makefile.in 中

MISCUTILS-$(CONFIG_MT)          += mt.o
MISCUTILS-$(CONFIG_NEWCMD)   += newcmd.o
MISCUTILS-$(CONFIG_RUNLEVEL)    += runlevel.o

接下去再一次更新 ./miscutils 目录中的配置文件,以便让新命令在布署进度中是可以预知的。这么些文件名字为Config.in,新命令是据守字母顺序增添的:

清单 15. 将指令增多到 Config.in 中

config CONFIG_NEWCMD
    bool "newcmd"
    default n
    help
      newcmd is a new test command.

这一个组织定义了叁个新结构项(通过 config 关键字)甚至八个布局选项(CONFIG_NEWCMD)。新命令可以启用,也足以禁止使用,由此大家对安插的美食指南属性使用了 bool (Boolean)值。那几个命令暗中同意是禁止使用的(n 表示 No),我们得以最终放上八个粗略的 Help 描述。在源代码树的 ./scripts/config/Kconfig-language.txt 文件中,大家得以看来配置语法的总体文法。

接下去需求立异 ./include/applets.h 文件,使其蕴藉那一个新命令。将上面那行内容增添到这么些文件中,记住要依据字母逐生机勃勃。维护那个程序相当重大,不然大家的下令就能够找不到。

项目清单 16. 将指令增多到 applets.h 中

USE_NEWCMD(APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER))

那定义了命令名(newcmd),它在 Busybox 源代码中的函数名(newcmd_main),应该在哪个地方会为那一个新命令创制链接(在这里种场所中,它在 /usr/bin 目录中),最终这一个命令是不是有权设置客商 id(在本例中是 no)。

尾数第3个步骤是向 ./include/usage.h 文件中增添详细的增加援救信息。正如你能够从这一个文件的例子中看到的平等,使用新闻可能这贰个详细。在本例中,笔者只加多了一点消息,那样就能够编写翻译这几个新命令了:

清单 17. 向 usage.h 增添帮衬音信

#define newcmd_trivial_usage   "None"
#define newcmd_full_usage   "None"

末段贰个手续是启用新命令(通过 make menuconfig,然后在 Miscellaneous Utilities 菜单中启用那些选项)然后使用 make必发365手机版游戏, 来编译 BusyBox。

使用新的 BusyBox,我们得以对这些新命令举办测量检验,如清单 18 所示。

项目清单 18. 测量试验新命令

$ ./busybox newcmd arg1
newcmd called:
arg[0] = newcmd
arg[1] = arg1
$ ./busybox newcmd --help
BusyBox v1.1.1 (2006.04.12-13:47+0000) multi-call binary

Usage: newcmd None

None

便是这般!BusyBox 开辟人士开垦了一个了不起但特别轻松扩张的工具。


回页首

结束语

BusyBox是为营造内部存款和储蓄器有数的嵌入式系统和遵照软盘系统的一个两全其美术专门的学问具。BusyBox通过将过多必不可缺的工具放入叁个可执路程序,并让它们得以分享代码中风姿罗曼蒂克律的有的,进而对它们的深浅举办了相当的大程度的削减,BusyBox对于嵌入式系统的话是四个百般管用的工具,由此值得我们花一些日子进行切磋。


BusyBox

维基百科,自由的百科全书

 

跳转至: 导航、 搜索

 

BusyBox

必发365bifa0000 5 BusyBox的截图

开发者

Erik Andersen[[1]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-1), Rob Landley[[2]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-2), Denys Vlasenko[[3]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-3)

开班版本

1999年11月4日 (1999-11-04)[[4]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-4)

操作系统

Unix-like

类型

Independent SUSp XCU implementation

BusyBox 是二个依照GPL、以自由软件情势透露的应用程序,由于可施行文件尺寸小、并行使 Linux内核,那使得它极度符合使用于嵌入式系统。别的,由于BusyBox成效强盛,由此有些人将 BusyBox 称为 Linux 工具里的Switzerland军刀。[[5]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-5)

目录

[隐藏]

必发365bifa0000 6

[编辑] 历史

BusyBox最先是由 布鲁斯·斐伦斯 在 1996年为Debian GNU/Linux安装盘编写制定的, 其原有构想是愿目的在于一张软盘上能放入三个开机系统,以作为急救盘和安装盘。后来它变成了崁入式Linux设备和系统和Linux公布版安装程序的真相标准,因为各个Linux可实施文件须求数Kb的空中,而集成四百多少个程序的Busy博克斯能够节约大量空间。

Enrique Zanardi担当珍惜BusyBox并留意在Debian 启航软盘(英语:Boot disk)安装系统的须要直到 1998年,再由担任 Linux路由器安排(英语:Linux Router Project)的 Dave Cinege 接手。Cinege 做了豆蔻年华部分充实:创设了二个模块化的Build碰到、转移 BusyBox's 指标到常常高档的 嵌入式系统。当 1999年 LRP 开辟进程趋缓时,Lineo, Inc.的 Erik Andersen 在1999年初阶正式地接手这几个专案继续维护它到2006年2月。在这里段中间,Linux的 嵌入式系统的市镇显明地成长,连带使BusyBox转趋成熟,同一时间扩充二者的使用群和效劳。

Denis Vlasenko(英语:Denis·弗拉先科)是现阶段BusyBox的维护者。

Paste_Image.png

[编辑] 功能

BusyBox能够被自定义化以提供二个超过四百种效应的子集。它能够提供好些个详列在单一UNIX规范里的功效,以至众多顾客会想在 Linux 系统上看到的职能。BusyBox 使用ash(英语:ash shell)。[[6]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-6)[[7]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-7)在 BusyBox的网址上得以找到全数机能的列表。[[8]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-8)

前不久是未曾_install这么些文件夹的

[编辑] 单生机勃勃可实行文件

特出的微型机程序对各样应用程序皆某些的二进制(可推行文件)文件。BusyBox是后生可畏十足二进制造进度序,那是繁多应用程序的群集,在合适参数的特定措施下,每一个都可经过以分裂的称号(每一个分化的名字借由标识链接或硬链接(英语:hard link)支持[[9]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-9))调用单生机勃勃BusyBox 二进制造进程序来拜见。

Busy博克斯受惠于单风度翩翩可试行文件攻略,如此一来省去了每种可实践文件必须有的标头 (特别是 ELF的可施行文件卡塔尔(英语:State of Qatar), 那也让 Busybox 无需 库 便可完成代码共用。那么些技艺与 FreeBSD 中的 crunchgen[[10]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-10) 指令肖似。与运用 crunchgen 创设的合併工具程序不相同在于,Busybox 只提供每一种工具程序的简化版 (如: ls 指令不提供排序功效卡塔尔(英语:State of Qatar)。

分享通用的代码,并以程序大小优化为目标,使以 BusyBox创立的系统所须求的空间远低于使用相应的总体育工作具所急需的上空。研讨 [[11]](http://www.cnblogs.com/kungfupanda/archive/2013/01/06/2847196.html#cite_note-11) 比较了GNU, Busybox, asmutils 及 Perl 完毕的标准 Unix 指令发掘特定情景下,BusyBox 的运转速度会优于其余完结,但绝不总是这么。

  1. 我们去改一下Makefile吧.

[编辑] 示例

BusyBox 所蕴藏的前后相继只供给轻松的将名称附加在第1个参数就能够运营:

/bin/busybox ls

更广阔的作法是,那些指令会以链接 (使用 硬链接 或者 标识链接)至 BusyBox 可施行文件,BusyBox会侦测其被链接时的称号,并运行对应的下令。譬喻来讲,只要将 /bin/ls 链接到 /bin/busybox,就可以运行

/bin/ls

必发365bifa0000 7

[编辑] 命令

Paste_Image.png

去164行改你的交叉编写翻译工具
和在190行改你的构造

必发365bifa0000 8

Paste_Image.png

必发365bifa0000 9

Paste_Image.png

改后

必发365bifa0000 10

Paste_Image.png

  1. 用make menuconfig去计划一下busybox,

必发365bifa0000 11

Paste_Image.png

在Busybox Settings选项处回车走入(前边相似卡塔尔(قطر‎

必发365bifa0000 12

Paste_Image.png

进入build options

必发365bifa0000 13

Paste_Image.png

空格键切换红框为*就能够. 目标把busybox编写翻译成静态链接的可实施文件.不用信任其余库运维.

必发365bifa0000 14

Paste_Image.png

动向右键切换成exit退出, 回到上拔尖目录

进去红框选项

必发365bifa0000 15

Paste_Image.png

把红框也空格键切换为*, 指标是设置为VI风格编辑命令行

必发365bifa0000 16

Paste_Image.png

好了, 切换exit退出

再退出

必发365bifa0000 17

Paste_Image.png

  1. 上边是为使得开荒命令的安装, 没有索要的请跳过.

必发365bifa0000 18

Paste_Image.png

必发365bifa0000 19

Paste_Image.png

  1. 是还是不是要支持mdev, 依照自个儿景况选择此项.

必发365bifa0000 20

Paste_Image.png

如图选上

必发365bifa0000 21

Paste_Image.png

只顾这里有个blkdiscard, 上面大概有彩蛋.

必发365bifa0000 22

Paste_Image.png

  1. 切换exit退出

再退出

在yes处回车保存就能够.

必发365bifa0000 23

Paste_Image.png

  1. make一下探望

miscutils/nandwrite.c: In function 'nandwrite_main':miscutils/nandwrite.c:151: error: 'MTD_FILE_MODE_RAW' undeclared (first use in this function)miscutils/nandwrite.c:151: error: (Each undeclared identifier is reported only oncemiscutils/nandwrite.c:151: error: for each function it appears in.)make[1]: *** [miscutils/nandwrite.o] Error 1make: *** [miscutils] Error 2

现身上述错误了^^

查了须臾间
MTD_FILE_MODE_RAW出今后本机的/usr/include/mtd/mtd-abi.h头文件中,
那自身复制到include上边试试

还要去给提示错误的充足c文件增添上头文件

vi miscutils/nandwrite.c +54

必发365bifa0000 24

Paste_Image.png

  1. 再make一下

util-linux/blkdiscard.c: In function 'blkdiscard_main':util-linux/blkdiscard.c:72: error: 'BLKSECDISCARD' undeclared (first use in this function)util-linux/blkdiscard.c:72: error: (Each undeclared identifier is reported only onceutil-linux/blkdiscard.c:72: error: for each function it appears in.)make[1]: *** [util-linux/blkdiscard.o] Error 1make: *** [util-linux] Error 2
又现身错误了, 留意看看 blkdiscard不正是地点提到的可怜模块吗. 应该用不到,无去掉它尝试

必发365bifa0000 25

Paste_Image.png

  1. 广大未定义^^

util-linux/lib.a(nsenter.o): In function nsenter_main':nsenter.c:(.text.nsenter_main+0x188): undefined reference tosetns'coreutils/lib.a(sync.o): In function sync_main':sync.c:(.text.sync_main+0x78): undefined reference tosyncfs'collect2: ld returned 1 exit statusNote: if build needs additional libraries, put them in CONFIG_EXTRA_去164行改你的交叉编译工具。LDLIBS.Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"make: *** [busybox_unstripped] Error 1
那试试不编写翻译那五个模块.

必发365bifa0000 26

Paste_Image.png

必发365bifa0000 27

Paste_Image.png

必发365bifa0000 28

Paste_Image.png

必发365bifa0000 29

Paste_Image.png

  1. 保存, 再make

必发365bifa0000 30

Paste_Image.png

不曾错误.

  1. 接着make install

必发365bifa0000 31

Paste_Image.png

必发365bifa0000 32

Paste_Image.png

必发365bifa0000 33

Paste_Image.png

  1. 相通成功了, 因为尝鲜用,就不意气风发后生可畏google种种错误了.
下一篇:没有了