busybox根文件系统制作及碰到的编译问题记录(缺少curses.h,setns和syncfs 未定义)

1、在官网https://busybox.net/左侧的 get busybox栏有一行Download source,点击即可打开下载页面,选择一个版本进行下载,下载busybox源码后,

将压缩包拷贝到Ubuntu环境下,

 

tar -vxjf busybox-1.29.0.tar.bz2
解压完成以后进入到 busybox-1.29.0 目录中


2、修改 Makefile,添加编译器路径,打开 busybox 的顶层 Makefile,找到并添加 ARCH 和 CROSS_COMPILE的值(根据自己的arm-linux 编译器存放路径填写,建议填绝对地址),如下所示:

 3、配置busybos

先使用如下命令,使用默认配置来配置一下busybox:sudo make defconfig

再通过图形化配置,进一步配置选择自己想要的功能:sudo make menuconfig

得到如下的界面

 配置路径如下:
Location:
-> Settings
-> Build static binary (no shared libs)
选项“Build static binary (no shared libs)”用来决定是静态编译 busybox 还是动态编译,静
态编译的话就不需要库文件,但是编译出来的库会很大。动态编译的话要求根文件系统中有库
文件,但是编译出来的 busybox 会小很多。这里我们不能采用静态编译!因为采用静态编译的
话 DNS 会出问题!无法进行域名解析,配置如图 所示:

继续配置如下路径配置项:

Location:
-> Settings
-> vi-style line editing commands

 继续配置如下路径配置项:

Location:
        -> Linux Module Utilities
                -> Simplified modutils

默认会选中“Simplified modutils”,这里我们要取消勾选

 

4、尝试编译busybox,出现以下问题:

(1)、提示缺少curses.h文件

scripts/kconfig/lxdialog/dialog.h:31:20: fatal error: curses.h: 

解决办法:安装ncurses,安装方法如下:

sudo apt-get install libncurses5-dev

安装完成后继续编译

(2)、继续编译出现错误,提示setns和syncfs未定义,由于这两个文件对于根文件系统的影响微乎其微,所以我们在menuconfig里把这两个地方屏蔽掉就可以了。

使用sudo make menuconfig

配置如下路径选项:

location :

                ->Linux system Utilities

                        ->nsenter (去掉勾选)

配置如下路径选项:

location :

                ->Coreutils

                        ->sync (去掉勾选)

再继续使用make编译,可输入如下命令:

make install CONFIG_PREFIX=/home/uno/fandy/linux/rootfs


COFIG_PREFIX 指 定 编 译 结 果 的 存 放 目 录 , 比 如 我 存 放 到
“/home/uno/fandy/linux/rootfs”目录中,等待编译完成。编译完成后如图所示

 编译完成以后会在 busybox 的所有工具和文件就会被安装到 rootfs 目录中, rootfs 目录内容,,如图所示

 

 

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值