更新历史
20151217,10:51,V1.0
初稿,略
前言
移植这个,其实是为了无线网络模块移植做准备。
我的工作SDK是Allwinner的A20裁剪code,没有android,取代的时camlinux——对busybox来说,没区别。
一,环境准备
1.源码获取
推荐的办法是:
$ CD A20 / camlinux / &&源码编译/ envsetup.sh && mklichee
lichee编译结束后,正好源码也得到了
$ CD ../lichee/out/linux/common/buildroot/build/busybox-1.18.3/
这里,可以选择将busybox的-1.18..3文件夹拷贝出去再修改。
当然,也可以手动解压,源码和补丁路径如下:
/A20/lichee/buildroot/dl/busybox-1.18.3.tar.bz2
/ A20 /荔枝/ buildroot的/封装/ busybox的/
二,busybox的编译报错解决
$化妆
1.loginutils / passwd.c:104:16:错误:存储大小
增加头文件解决
$ VIM的Linux /普通/ buildroot的/建设/ busybox的-1.18.3 /有/ libbb.h
的#include <SYS / RESOURCE.H>
2.ext2fs / ext2_fs.h
具体报错日志忘了,总之是这个头文件找不到,grep的后,决定修改源码:
$ VIM ./util-linux/mkfs_ext2.c
//#包含<linux / ext2_fs.h>
#包括“../e2fsprogs/old_e2fsprogs/ext2fs/ext2_fs.h”
3.EXT2_FEATURE_COMPAT_RESIZE_INO
具体报错日志忘了,总之是这个宏找不到,解决方法如下:
$ grep的EXT2_FEATURE_COMPAT_RESIZE_INO。-r
找到该宏的使用位置,分析后,怀疑代码错误,修改... INO为INODE
$ VIM ./util-linux/mkfs_ext2.c
| (EXT2_FEATURE_COMPAT_RESIZE_INODE
4. /系统/斌/ busybox的:不执行:魔术7F45
编译器问题,修改Makefile文件:
$ VIM的Makefile
#CC = $(CROSS_COMPILE)GCC
CC = $(CROSS_COMPILE)在arm-linux的-gnueabi-GCC
5.strip:无法识别该输入文件的格式`busybox_unstripped'
这里饶了很大的弯,最后发现,修改带就好:
$ VIM的Makefile
#STRIP = $(CROSS_COMPILE)条
STRIP = $(CROSS_COMPILE)臂的Linux gnueabi钢带
6..config
其他问题不少,比如如何静态编译等,基本都是通过修改.config文件,或者make menuconfig进行解决,下面给出参考的.config
#
#自动生成进行配置:请不要编辑
#Busybox的版本:1.18.3
#周四12月17日10点46分20秒2015年
#
CONFIG_HAVE_DOT_CONFIG = Y
#
#Busybox的设置
#
#
#常规配置
#
CONFIG_DESKTOP = Y
#CONFIG_EXTRA_COMPAT未设置
CONFIG_INCLUDE_SUSv2 = Y
#CONFIG_USE_PORTABLE_CODE未设置
CONFIG_PLATFORM_LINUX = Y
CONFIG_FEATURE_BUFFERS_USE_MALLOC = Y
#CONFIG_FEATURE_BUFFERS_GO_ON_STACK未设置
#CONFIG_FEATURE_BUFFERS_GO_IN_BSS未设置
CONFIG_SHOW_USAGE = Y
CONFIG_FEATURE_VERBOSE_USAGE = Y
#CONFIG_FEATURE_COMPRESS_USAGE未设置
CONFIG_FEATURE_INSTALLER = Y
#CONFIG_INSTALL_NO_USR未设置
#CONFIG_LOCALE_SUPPORT未设置
#CONFIG_UNICODE_SUPPORT未设置
#CONFIG_UNICODE_USING_LOCALE未设置
#CONFIG_FEATURE_CHECK_UNICODE_IN_ENV未设置
CONFIG_SUBST_WCHAR = 0
CONFIG_LAST_SUPPORTED_WCHAR = 0
#CONFIG_UNICODE_COMBINING_WCHARS未设置
#CONFIG_UNICODE_WIDE_WCHARS未设置
#CONFIG_UNICODE_BIDI_SUPPORT未设置
#CONFIG_UNICODE_NEUTRAL_TABLE未设置
#CONFIG_UNICODE_PRESERVE_BROKEN未设置
CONFIG_LONG_OPTS = Y
CONFIG_FEATURE_DEVPTS = Y
CONFIG_FEATURE_CLEAN_UP = Y
CONFIG_FEATURE_WTMP = Y
CONFIG_FEATURE_UTMP = Y
#CONFIG_FEATURE_PIDFILE未设置
CONFIG_FEATURE_SUID = Y
#CONFIG_FEATURE_SUID_CONFIG未设置
#CONFIG_FEATURE_SUID_CONFIG_QUIET未设置
#CONFIG_SELINUX未设置
#CONFIG_FEATURE_PREFER_APPLETS未设置
CONFIG_BUSYBOX_EXEC_PATH =“的/ proc /自/ EXE”
CONFIG_FEATURE_SYSLOG = Y
CONFIG_FEATURE_HAVE_RPC = Y
#
#构建选项
#
CONFIG_STATIC = Y
#CONFIG_PIE未设置
#CONFIG_NOMMU未设置
#CONFIG_BUILD_LIBBUSYBOX未设置
#CONFIG_FEATURE_INDIVIDUAL未设置
#CONFIG_FEATURE_SHARED_BUSYBOX未设置
#CONFIG_LFS未设置
CONFIG_CROSS_COMPILER_PREFIX =“”
CONFIG_EXTRA_CFLAGS =“”
#
#调试选项
#
#CONFIG_DEBUG未设置
#CONFIG_DEBUG_PESSIMIZE未设置
#CONFIG_WERROR未设置
CONFIG_NO_DEBUG_LIB = Y
#CONFIG_DMALLOC未设置
#CONFIG_EFENCE未设置
#
#安装选项(“make install的”行为)
#
CONFIG_INSTALL_APPLET_SYMLINKS = Y
#CONFIG_INSTALL_APPLET_HARDLINKS未设置
#CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS未设置
#CONFIG_INSTALL_APPLET_DONT未设置
#CONFIG_INSTALL_SH_APPLET_SYMLINK未设置
#CONFIG_INSTALL_SH_APPLET_HARDLINK未设置
#CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER未设置
CONFIG_PREFIX =“./_安装”
#
#Busybox的库调整
#
CONFIG_PASSWORD_MINLEN = 6
CONFIG_MD5_SIZE_VS_SPEED = 2
#CONFIG_FEATURE_FAST_TOP未设置
#CONFIG_FEATURE_ETC_NETWORKS未设置
CONFIG_FEATURE_USE_TERMIOS = Y
CONFIG_FEATURE_EDITING = Y
CONFIG_FEATURE_EDITING_MAX_LEN = 1024
CONFIG_FEATURE_EDITING_VI = Y
CONFIG_FEATURE_EDITING_HISTORY = 999
CONFIG_FEATURE_EDITING_SAVEHISTORY = Y
CONFIG_FEATURE_TAB_COMPLETION = Y
#CONFIG_FEATURE_USERNAME_COMPLETION未设置
CONFIG_FEATURE_EDITING_FANCY_PROMPT = Y
#CONFIG_FEATURE_EDITING_ASK_TERMINAL未设置
CONFIG_FEATURE_NON_POSIX_CP = Y
#CONFIG_FEATURE_VERBOSE_CP_MESSAGE未设置
CONFIG_FEATURE_COPYBUF_KB = 4
CONFIG_MONOTONIC_SYSCALL = Y
CONFIG_IOCTL_HEX2STR_ERROR = Y
CONFIG_FEATURE_HWIB = Y
#
#小程序
#
#
#档案公用事业
#
#CONFIG_FEATURE_SEAMLESS_XZ未设置
#CONFIG_FEATURE_SEAMLESS_LZMA未设置
#CONFIG_FEATURE_SEAMLESS_BZ2未设置
#CONFIG_FEATURE_SEAMLESS_GZ未设置
#CONFIG_FEATURE_SEAMLESS_Z未设置
CONFIG_AR = Y
#CONFIG_FEATURE_AR_LONG_FILENAMES未设置
CONFIG_FEATURE_AR_CREATE = Y
CONFIG_BUNZIP2 = Y
#CONFIG_BZIP2未设置
CONFIG_CPIO = Y
#CONFIG_FEATURE_CPIO_O未设置
#CONFIG_FEATURE_CPIO_P未设置
#CONFIG_DPKG未设置
#CONFIG_DPKG_DEB未设置
#CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY未设置
CONFIG_GUNZIP = Y
CONFIG_GZIP = Y
#CONFIG_FEATURE_GZIP_LONG_OPTIONS未设置
#CONFIG_LZOP未设置
#CONFIG_LZOP_COMPR_HIGH未设置
#CONFIG_RPM2CPIO未设置
#CONFIG_RPM未设置
CONFIG_TAR = Y
CONFIG_FEATURE_TAR_CREATE = Y
#CONFIG_FEATURE_TAR_AUTODETECT未设置
CONFIG_FEATURE_TAR_FROM = Y
#CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY未设置
#CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY未设置
CONFIG_FEATURE_TAR_GNU_EXTENSIONS = Y
CONFIG_FEATURE_TAR_LONG_OPTIONS = Y
CONFIG_FEATURE_TAR_TO_COMMAND = Y
#CONFIG_FEATURE_TAR_UNAME_GNAME未设置
#CONFIG_FEATURE_TAR_NOPRESERVE_TIME未设置
#CONFIG_FEATURE_TAR_SELINUX未设置
#CONFIG_UNCOMPRESS未设置
CONFIG_UNLZMA = Y
#CONFIG_FEATURE_LZMA_FAST未设置
CONFIG_LZMA = Y
CONFIG_UNXZ = Y
CONFIG_XZ = Y
CONFIG_UNZIP = Y
#
#Coreutils的
#
CONFIG_BASENAME = Y
CONFIG_CAT = Y
CONFIG_DATE = Y