`
king_tt
  • 浏览: 2259379 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

构建根文件系统一之ubuntu12.04下安装编译BusyBox图文解说

阅读更多

下载并解压

1、下载busybox源码包,可以从http://www.busybox.net/downloads/网站下载,这里我使用的是busybox-1.7.0.tar.bz2版本,本版点此下载

2、新建一个文件夹,命名为busybox(路径依自己而定,不过要记住此路径,下面会用到),并将下载的源码包存放在此目录下,如下

3、执行命令:tar -jxvf busybox-1.7.0.tar.bz2解压缩

解压缩后的文件夹

配置

4、执行命令:cd busybox-1.20.2 进入解压后的文件夹

此时你可以在此文件夹下看到解压后的文件

5、执行命令:make menuconfig ,出现配置界面

注意,很可能会出现 fatal error: curses.h: No such file or directory

compilation terminated.这样的错误,原因是没有安装ncurses库,使用以下命令即可安装:sudo apt-get install libncurses5-dev libncursesw5-dev

6、在这里先使用默认的配置,选择< Exit>,按回车键退出,会提示你是否保存

选择<Yes>

要注意的有一点,咱们这里的默认配置中使用的是动态连接,在构造根文件系统时需要在/lib目录下放置glibc库文件。不要感觉很麻烦,先这样设置就行。我也是看着韦老师的书弄的,后面还有。

编译

7、执行命令:vim Makefile 修改根目录下的Makefile,使用交叉编译器

这里只需要修改下图175和176这两行内容,不同的版本它们的所在行可能不一样。

修改后的这两行为下图

8、执行命令:make 编译BusyBox

我里个去,竟然有错误,提示以下错误

/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/../arm-none-linux-gnueabi//sys-root/usr/include/linux/netfilter.h:55: error: field 'in' has incomplete type
/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/../arm-none-linux-gnueabi//sys-root/usr/include/linux/netfilter.h:56: error: field 'in6' has incomplete type
ipsvd/tcpudp.c: In function 'tcpudpsvd_main':
ipsvd/tcpudp.c:314: warning: ignoring return value of 'write', declared with attribute warn_unused_result
make[1]: *** [ipsvd/tcpudp.o] 错误 1
make: *** [ipsvd] 错误 2

 

不着急,原因就是在/Your Arm-linux-gccDirectory/../arm-none-linux-gnueabi//sys-root/usr/include/linux/netfilter.h这个头文件里少加入#include<netinet/in.h> 这一句就可以了

再次make,又有如下错误,闹心

networking/libiproute/lib.a(iptunnel.o): In function `print_tunnel':
iptunnel.c:(.text.print_tunnel+0x1ec): undefined reference to `__cpu_to_be16'
iptunnel.c:(.text.print_tunnel+0x200): undefined reference to `__cpu_to_be16'
iptunnel.c:(.text.print_tunnel+0x238): undefined reference to `__cpu_to_be16'
iptunnel.c:(.text.print_tunnel+0x24c): undefined reference to `__cpu_to_be16'
iptunnel.c:(.text.print_tunnel+0x26c): undefined reference to `__cpu_to_be16'
networking/libiproute/lib.a(iptunnel.o):iptunnel.c:(.text.print_tunnel+0x290): more undefined references to `__cpu_to_be16' follow
collect2: ld returned 1 exit status
make: *** [busybox_unstripped] 错误 1

解决方法就是在该目录下的vim networking/libiproute/iptunnel.c 文件中加入#include <asm/byteorder.h>

先执行一次make clean命令,再执行make命令,好家伙,终于没错误了。如下

安装

9、执行命令:make CONFIG_PREFIX=/YourPath install,这里YourPath是你的要将BusyBox安装的位置。我将它安装在了/home/song/nfs_root/fs_mini下,如下

make CONFIG_PREFIX=/home/song/nfs_root/fs_mini install

一切完成后,将在/home/song/nfs_root/fs_mini/目录下生成如下文件

其中linuxrc和/sbin/init的功能完全一样;其他目录下是各种命令,不过它们都是到/bin/busybox的符号连接,比如 /home/song/nfs_root/fs_mini/sbin目录下:

除 bin/busybox 外,其他文件都是到bin/busybox的符号连接。busybox是所有命令的集合体,这些符号连接文件可以直接运行。比如在开发板上,运行“ls”命令和“busybox ls”命令是一样的。

到这里busybox已经安装成功了,还不知道怎么用吧,我会再写下一篇的。

下一篇:http://blog.csdn.net/mybelief321/article/details/9896311

分享到:
评论

相关推荐

    Ubuntu12.04下编译成功的APUE附带源码

    《在Ubuntu 12.04环境下编译与学习APUE源码》 APUE(Advanced Programming in the UNIX Environment)是一本经典的UNIX/Linux系统编程教材,由Stephen R. Henderson和Richard Stevens共同撰写,旨在深入讲解UNIX...

    Ubuntu12.04 nginx python uwsgi Django安装步骤

    Ubuntu 12.04 下安装 Nginx、Python、uWSGI 和 Django 的步骤 在本文中,我们将介绍如何在 Ubuntu 12.04 环境下安装 Nginx、Python、uWSGI 和 Django。这些技术栈组合是非常流行的 Web 应用程序开发环境。 一、...

    Ubuntu 12.04下如何安装MySQ

    Ubuntu 12.04下如何安装MySQL ,我按照这文档,已经成功在ubuntu 12.04安装成功mysql!

    opencv2.4.9 ubuntu12.04LTS i386下的编译包java

    在Ubuntu 12.04 LTS(一个基于Debian的Linux发行版)的i386架构上编译意味着这个OpenCV版本已经适应了32位系统。这很重要,因为虽然64位系统已经成为主流,但仍有大量32位系统在运行,尤其是在嵌入式设备或旧硬件上...

    libc6 for ubuntu12.04

    标题“libc6 for ubuntu12.04”涉及的是Ubuntu 12.04操作系统中的一个关键系统库——libc6。这个标题表明这是一个针对该特定版本Ubuntu的libc6软件包,它是Linux系统中核心的C语言运行时库。 **libc6详解** libc6...

    在ubuntu12.04下编译内核

    本文将基于Ubuntu 12.04操作系统,详细介绍编译Linux内核的全过程,包括必要的准备工作、内核配置、生成与安装新内核以及如何调整默认配置文件等关键步骤。 #### 一、编译前的准备工作 在开始编译Linux内核之前,...

    ubuntu12.04安装及配置过程详解

    #### 二、Win7下硬盘安装Ubuntu 12.04 形成双系统 **1. 准备引导工具** - **下载 EasyBCD 编辑引导工具:** 用于编辑Windows的启动菜单,加入Ubuntu的启动选项。 - **划分磁盘空间:** - **步骤:** - 右键点击...

    ubuntu12.04下安装freetype出错处理.docx

    Ubuntu 12.04 下安装 FreeType 出错处理 FreeType 是一个开源的字体渲染引擎,广泛应用于各种操作系统和应用程序中。在 Ubuntu 12.04 下安装 FreeType 时,可能会出现一些错误,下面是解决这些错误的办法。 一、...

    win7下U盘安装ubuntu12.04双系统教程

    在Windows 7操作系统下安装Ubuntu 12.04双系统,主要涉及以下几个方面的知识: 1. 系统准备:首先需要在Win7系统中预留出至少30GB的空闲磁盘空间用于安装Ubuntu 12.04。这个空间可以位于硬盘的任何位置,但为了方便...

    OpenCV-2.4.0在ubuntu12.04下编译出的目标文件,可以直接使用

    OpenCV-2.4.0在ubuntu12.04下编译出的目标文件,可以直接使用,详情查看本人博客:http://blog.csdn.net/shuxiao9058/article/details/7525376

    Ubuntu Server 12.04安装图解

    Ubuntu Server 12.04,代号"precise pangolin",是Ubuntu发行版的一个长期支持(LTS)版本,为服务器环境提供了稳定、安全且高效的操作系统。这个版本的生命周期长达五年,确保了用户在维护期间能得到持续的安全更新...

    Ubuntu12.04下的JDK安装

    在Ubuntu 12.04操作系统中安装Java Development Kit (JDK) 是开发Java应用程序的基础步骤。以下是详细的安装过程: 1. **下载JDK**: 首先,访问Oracle官方网站...

    ubuntu12.04下安装jdk

    接着,在系统的根目录`/usr`下创建一个名为`java`的文件夹,用于存放JDK文件: ```bash sudo mkdir /usr/java ``` 然后,你需要将JDK的Linux x64版本的归档文件(例如:`jdk-7u9-linux-x64.tar.gz`)通过SSH工具(如...

    Ubuntu 12.04 64位编译cm-10.2 总结

    标题“Ubuntu 12.04 64位编译cm-10.2 总结”涉及到的是在Ubuntu 12.04 LTS(长期支持版)64位操作系统上编译CyanogenMod(CM)10.2的过程。CyanogenMod是一个基于Android开源项目的第三方操作系统,CM 10.2是针对...

    Ubuntu12.04下交叉编译VLC-2.1.1-Win32程序的说明

    在本文中,我们将详细探讨如何在Ubuntu 12.04环境下进行VLC-2.1.1的交叉编译,以生成适用于Windows 32位系统的程序。这个过程涉及到安装必要的工具,设置编译环境,以及配置和编译源代码。 首先,交叉编译是在一个...

    Ubuntu12.04下Ns2.35安装步骤

    在Ubuntu 12.04操作系统中安装Ns2.35是一个系统性的过程,涉及到多个步骤,主要包括软件下载、系统更新、依赖包安装以及环境变量配置。以下是对这些步骤的详细说明: 首先,你需要从SourceForge网站下载ns-allinone...

    Ubuntu 12.04下安装Oracle Express 11gR2

    在Ubuntu 12.04下安装Oracle Express 11g R2的过程需要一系列的步骤来确保软件的顺利安装和运行。Oracle Express Edition(XE)11g R2是一个免费的数据库管理系统,可为学习和开发提供一个功能丰富的平台。在Linux...

    怎样在 Ubuntu 12.04 中安装和设置 Samba 实现网上邻居共享

    Ubuntu 12.04 中 Samba 安装和设置指南 Samba 是一款功能强大的共享工具,可以实现与 Windows 的共享,就是我们经常在 Windows 计算机之间使用的网上邻居功能,可以共享文件和打印机等。在 Ubuntu 12.04 中安装和...

    Windows系统下安装与配置Ubuntu 12.04 LTS虚拟机

    使用VirtualBox在Windows系统下安装与配置Ubuntu 12.04 LTS虚拟机

Global site tag (gtag.js) - Google Analytics