编译busybox-1.24.1 制作文件系统
arm-linux-gcc 3.4.5
busybox-1.24.1.tar.bz2
1, 修改 Makefile
找到以下2处修改为
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
2, 打开配置菜单
make menuconfig
这里进行一些配置,打开 TAB 补全功能,选中 ifconfig , 打开驱动加载功能等
可以按 / 后输入字符进行搜索
错误1
miscutils/i2c_tools.c: At top level:
miscutils/i2c_tools.c:1046: error: `I2C_FUNC_SMBUS_PEC' undeclared here (not in a function)
miscutils/i2c_tools.c:1046: error: initializer element is not constant
miscutils/i2c_tools.c:1046: error: (near initialization for `i2c_funcs_tab[12].value')
miscutils/i2c_tools.c:1047: error: initializer element is not constant
miscutils/i2c_tools.c:1047: error: (near initialization for `i2c_funcs_tab[12]')
miscutils/i2c_tools.c:1049: error: initializer element is not constant
miscutils/i2c_tools.c:1049: error: (near initialization for `i2c_funcs_tab[13]')
miscutils/i2c_tools.c:1051: error: initializer element is not constant
miscutils/i2c_tools.c:1051: error: (near initialization for `i2c_funcs_tab[14]')
miscutils/i2c_tools.c:1052: error: initializer element is not constant
miscutils/i2c_tools.c:1052: error: (near initialization for `i2c_funcs_tab[15]')
make[1]: *** [miscutils/i2c_tools.o] Error 1
make: *** [miscutils] Error 2
方法:
make menuconfig 去掉 i2c 相关模块
错误2
miscutils/ionice.c: In function `ioprio_set':
miscutils/ionice.c:23: error: `SYS_ioprio_set' undeclared (first use in this function)
miscutils/ionice.c:23: error: (Each undeclared identifier is reported only once
miscutils/ionice.c:23: error: for each function it appears in.)
miscutils/ionice.c: In function `ioprio_get':
miscutils/ionice.c:28: error: `SYS_ioprio_get' undeclared (first use in this function)
make[1]: *** [miscutils/ionice.o] Error 1
make: *** [miscutils] Error 2
方法:
make menuconfig 去掉 ionice 相关模块
错误3
miscutils/nandwrite.c:91: error: dereferencing pointer to incomplete type
miscutils/nandwrite.c:97: error: `MEMGETBADBLOCK' undeclared (first use in this function)
miscutils/nandwrite.c:97: error: (Each undeclared identifier is reported only once
miscutils/nandwrite.c:97: error: for each function it appears in.)
miscutils/nandwrite.c:102: error: dereferencing pointer to incomplete type
miscutils/nandwrite.c: In function `nandwrite_main':
miscutils/nandwrite.c:117: error: storage size of 'meminfo' isn't known
miscutils/nandwrite.c:118: error: storage size of 'oob' isn't known
miscutils/nandwrite.c:145: error: `MEMGETINFO' undeclared (first use in this function)
miscutils/nandwrite.c:252: error: `MEMREADOOB' undeclared (first use in this function)
miscutils/nandwrite.c:117: warning: unused variable `meminfo'
miscutils/nandwrite.c:118: warning: unused variable `oob'
make[1]: *** [miscutils/nandwrite.o] Error 1
方法:
make menuconfig 去掉 nandwrite,nanddump模块
错误4
miscutils/ubi_tools.c:67:26: mtd/ubi-user.h: No such file or directory
miscutils/ubi_tools.c: In function `ubi_tools_main':
miscutils/ubi_tools.c:106: error: `UBI_DEV_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:106: error: (Each undeclared identifier is reported only once
miscutils/ubi_tools.c:106: error: for each function it appears in.)
miscutils/ubi_tools.c:107: error: `UBI_VOL_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:115: error: field `attach_req' has incomplete type
miscutils/ubi_tools.c:116: error: field `mkvol_req' has incomplete type
miscutils/ubi_tools.c:117: error: field `rsvol_req' has incomplete type
miscutils/ubi_tools.c:181: error: `UBI_IOCATT' undeclared (first use in this function)
miscutils/ubi_tools.c:194: error: `UBI_IOCDET' undeclared (first use in this function)
miscutils/ubi_tools.c:237: error: `UBI_DYNAMIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:239: error: `UBI_STATIC_VOLUME' undeclared (first use in this function)
方法:
make menuconfig 去掉 ubi 相关模块
错误5
util-linux/umount.c: In function `umount_main':
util-linux/umount.c:87: error: `MNT_DETACH' undeclared (first use in this function)
util-linux/umount.c:87: error: (Each undeclared identifier is reported only once
util-linux/umount.c:87: error: for each function it appears in.)
make[1]: *** [util-linux/umount.o] Error 1
make: *** [util-linux] Error 2
方法:
umount 这里不能去掉了,因为这个功能是需要的 打开源码看看
83 // MNT_FORCE and MNT_DETACH (from linux/fs.h) must match
84 // OPT_FORCE and OPT_LAZY.
85 {
86 typedef char bug[
87 (OPT_FORCE != MNT_FORCE || OPT_LAZY != MNT_DETACH) ? -1 : 1
88 ];
打开 ARM GCC 的 include/linux/fs.h 确实没有发现这2个定义
从 linux 内核源码里面找到这个 include/linux/fs.h
找到里面的这个
#define MNT_FORCE 0x00000001 /* Attempt to forcibily umount */
#define MNT_DETACH 0x00000002 /* Just detach from the tree */
把这里直接写为2 在次 make
错误6
coreutils/lib.a(sync.o)(.text.sync_main+0x80): In function `sync_main':
: undefined reference to `syncfs'
collect2: ld returned 1 exit status
make: *** [busybox_unstripped] Error 1
解决:
vi ./coreutils/sync.c
/*
* syncfs is documented to only fail with EBADF,
* which can't happen here. So, no error checks.
*/
86行 syncfs(fd);
18 行 //config: bool "Enable -d and -f flags (requres syncfs(2) in libc)"
找了一个 arm-libc 中并没有这个函数
下载了 busybox-1.23.0.tar.bz2 找到同名文件,发现这个内容明显要简单很多。用 1.23 的版本替换 1.24 的。
#include "libbb.h"
/* This is a NOFORK applet. Be very careful! */
int sync_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int sync_main(int argc UNUSED_PARAM, char **argv IF_NOT_DESKTOP(UNUSED_PARAM))
{
/* coreutils-6.9 compat */
bb_warn_ignoring_args(argv[1]);
sync();
return EXIT_SUCCESS;
}
在次编译通过了
Your linker does not support --sort-section,alignment
Trying libraries: crypt m
Library crypt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Final link with: m
安装
make CONFIG_PREFIX=/opt/fs_1.24 install
制作 /dev/ 设备节点
cd /opt/fs_1.24
mkdir dev
cd dev
mknod console c 5 1
mknod null c 1 3
创建 etc 和 启动目录
cd ..
mkdir etc/init.d -p
创建启动脚本
vi etc/inittab
console::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
编辑启动脚本启动 fstab 挂载设备节点等
vi etc/init.d/rcS
#!/bin/sh
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
创建自动挂载文件
mkdir tmp
mkdir sys
mkdir proc
vi etc/fstab
#device mount-point type optionos dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
复制 C 库
mkdir lib
cd /opt/gcc/arm-linux/lib
cp *.so* /opt/fs_1.24/lib/ -d
制作好了, 用 NFS 启动吧。
# busybox --help
BusyBox v1.24.1 (2016-03-10 09:37:27 CST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.
Licensed under GPLv2. See source distribution for detailed
copyright notices.
配置成功。
rmmod 时出现错误 , 按提示创建 目录即可。
rmmod: can't change directory to '/lib/modules': No such file or directory
mkdir /lib/modules
rmmod: can't change directory to '2.6.22.6': No such file or directory
mkdir /lib/modules/2.6.22.6
ps: gcc-4.3.2 编译时错误少很多。
编译busybox-1.24.1 制作文件系统的更多相关文章
- [Busybox]Busybox制作文件系统
问题: 1.目前busybox和bootstrap两种方案制作文件系统,哪种开发周期更短,更加简单? 2.如果需要在文件系统中添加某个package,要怎么做,如vim/udhcpd等? 转自:htt ...
- buildroot制作文件系统
/******************************************************************* * buildroot制作文件系统 * 使用buildroot ...
- [置顶]
从零制作文件系统到JZ2440,使其支持telnet , ftp 和tftp
转自:http://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328515&idx=1&sn=5849fba4b44e ...
- Suse环境下编译linux-2.6.24内核
Suse环境下编译linux-2.6.24内核 1.下载linux-2.6.24内核源码: https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/ ...
- 用bosybox制作文件系统
在orangepi_sdk/source/busybox-1.25.0目录里有源码. ). 先清除编译出来的文件及配置文件 make distclean ). 配置busybox make menuc ...
- linux制作文件系统
1.获取文件系统源码并解压 这里使用的源码是天嵌提供的“root_qtopia_2.2.0_2.6.30.4_20100601.tar.bz2” #tar xvf root_qtopia_2..0_2 ...
- Linux下编译busybox时出现的问题
编译busybox的时候出现了一个问题: sync.c:(.text.sync_main+0x78): undefined reference to `syncfs' collect2: ld ret ...
- Linux的VMWare中Centos7磁盘分区管理 fdisk分区和制作文件系统格式化和开机自动挂载
一.硬盘的组成零件扇区 磁道 磁盘容量 磁盘分区 简介 硬盘由容量.柱面数.磁头数.扇区数 C/H/S, Cylinder, Head, Sector(柱面/磁头数/扇区数) 1.磁头数表示硬盘总共有 ...
- 编译busybox错误
为了制作一个文件系统,首先要用busybox编译出文件系统所需要的应用程序.在下载了busybox-1.13.0.tar.bz2后,编译出现如下错误: In file included from /o ...
随机推荐
- Objective-C的对象模型
Objective-C是一门面向对象,并且在C的基础上加入了Smalltalk式的消息机制而形成的编程语言,它主要被苹果公司用于开发Mac OS X和iOS操作系统.既然Objective-C是面向对 ...
- 分享一个使用APICloud云数据库已上线的商城APP
本项目盈利模式依赖taobao模块实现淘宝闭环交易,发布销售淘宝联盟产品获取返佣.目前已在应用宝上线安卓版本,先上图. 源码在此: http://community.apicloud.com/bbs/ ...
- DG - dataguard trouble shooting的相关视图
•V$DATAGUARD_STATS:显示dataguard统计信息 备库 SQL> select * from v$dataguard_stats; NAME VALUE UNIT TIME_ ...
- jQuery中的siblings
所谓siblings,英文翻译就是兄弟节点.那么故名思意,就是拿到某元素的兄弟节点(不包括自己). <html> <head> <script type="te ...
- Java基础之泛型——使用泛型链表类型(TryGenericLinkedList)
控制台程序 定义Point类: public class Point { // Create a point from its coordinates public Point(double xVal ...
- Java I/O解读与使用实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲解了Java I/O解读与使用实例. 一.I/O基本概念 I/O全称是Inpu ...
- java collections读书笔记(11) Lists
继续这个系列,好久没学习了,懒惰呀. Set接口,实际上是collection 类别中最简单的一个接口,因为它并没有比Collection 接口增加任何的内容,相对而言,大家可能更喜欢List接口和它 ...
- 基于Qt实现的截图小程序
在最近做的行人检测项目中,由于需要训练分类器,而分类器的训练又需要有一个一定长宽的样本.为了方便样本的采集,因此实现了这样的一个截图程序.该程序的主要功能是加载视频到程序中,程序可以对视频进行播放.暂 ...
- Codeforce Round #226 Div2
这次CF虽然,但是- - 第一题看了很久的题目意思额,虽然慢了点- -,但还算没出错,还学会了hack了- -,还+了100- - 第二题想了很久- -...后来发现可以暴力- -,哎 第三题本来也应 ...
- sql 中延迟执行
SQL有定时执行的语句WaitFor. 语法格式:waitfor {delay 'time'|time 'time'} delay后面的时间是需要延迟多长时间后执行. time后面的时间是指定何时执行 ...