Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101538
  • 博文数量: 14
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 206
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 09:37
个人简介

记录我自己的成长....

文章分类

全部博文(14)

文章存档

2014年(2)

2013年(12)

我的朋友

分类: LINUX

2013-11-14 21:19:24

我想做一个linux的软盘镜像,需要用到busybox来做跟文件系统,就从       上下载了最新的busybox1.21.1,看说明文件安装非常简单,就是
#make menuconfig
#make
#make install
非常的简单,我也认为非常的简单,但是实际的过程却是出乎意料。

首先下载源码包,busybox-1.21.1.tar.bz2
解压源码包,用make menuconfig来配置编译选项

code:

  1. #tar xvf busybox-1.21.1.tar.bz2
  2. #cd busybox-1.21.1
  3. #make menuconfig
  在编译选项 Busybox Setting --> Build Options --> Build Busybox as a static binary (no share libs)
  这个选项比较重要,如果不选这个选项,编译是没有问题的。
  其他的暂时选择默认。到等出现问题时再来改动。
  现在就可以来编译了。
    #make
  之后就需要时间来等待了。不出问题最好,如果出了问题就需要来解决问题了。
  我编译时出了问题,就是没有找到libcrypt和libm库,在链接时出现了问题,其提示信息如下

code:

  1. /usr/lib/gcc/i586-suse-linux/4.7/../../../../i586-suse-linux/bin/ld: cannot find -lcrypt
  2. /usr/lib/gcc/i586-suse-linux/4.7/../../../../i586-suse-linux/bin/ld: cannot find -lm
  3. collect2: error: ld returned 1 exit status
  4. make: *** [busybox_unstripped] Error 1
  这是由于glibc造成的,我重新安装了静态的glibc,
  

code

  1. # zypper install glibc-static
   之后在次进行编译
    # make
   这次出现了更多的问题,其提示信息如下:

code:

  1. networking/lib.a(inetd.o): In function `reread_config_file':
  2. inetd.c:(.text.reread_config_file+0x5db): warning: Using 'getrpcbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
  3. networking/lib.a(inetd.o): In function `unregister_rpc':
  4. inetd.c:(.text.unregister_rpc+0xe): undefined reference to `pmap_unset'
  5. networking/lib.a(inetd.o): In function `register_rpc':
  6. inetd.c:(.text.register_rpc+0x3c): undefined reference to `pmap_unset'
  7. inetd.c:(.text.register_rpc+0x57): undefined reference to `pmap_set'
  8. networking/lib.a(inetd.o): In function `prepare_socket_fd':
  9. inetd.c:(.text.prepare_socket_fd+0x73): undefined reference to `bindresvport'
  10. collect2: error: ld returned 1 exit status
  11. make: *** [busybox_unstripped] Error 1
  这只是最后的部分,这段让我郁闷了很久,实在不知道该怎么办了,于是我就翻看inetd.c,等我意识到这是busybox中的一个功能模块时,我想如果要是,把这个模块去掉
  不让其编译会怎么样?由于前段时间设定NFS服务器的时候,我碰到了RPC协议,而在make menuconfig的选项中,有RPC选项,碰巧,出错信息也提到了RPC,我干脆
  在编译的时候不选这RPC功能,看看会怎样。
   于是在menuconfig中的菜单中Networking Utilities --->Support RPC services取消其选择。之后再次编译。
  结果一切正常。
     #make install
来安装busybox ,默认情况下,安装在当前目录的_install 目录下。可以通过menuconfig来改变安装的位置。 





阅读(3979) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~