LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2473|回复: 1

编译基于uclibc的busybox

[复制链接]
发表于 2004-12-1 10:30:05 | 显示全部楼层 |阅读模式
编译基于uclibc的busybox

  以前网上文章的介绍都是基于uclibc-0.9.16之前的版本,而编译busybox也是相应的选择静态链接,
  但是uclibc的后续版本提供了相应的toolchain,不像0.9.16之前的版本相应的生成gcc,可以直接用来编写基于uclibc的程序。
  我的做法是到www.uclibc.org
下载uclibc的toolchain(gcc-3.3.x),解压缩后,默认的target是i386
中间需要的包包括
binutils-2.14.90.0.6.tar.bz2
ccache-2.3.tar.gz
gcc-3.3.4.tar.bz2
kernel-header-2.4.25.tar.bz2
uClibc-snapshot.tar.bz2
  make的过程中会自动下载上述包到/gcc-3.3.x/source/dl,所以也可手动建立dl文件夹,并下载这些包到该文件夹。
  make完成之后生成toolchain_i386和toolchain_build_i386文件夹,在/toolchain_i386/bin中就是
  交叉编译需要的i386-linux-gcc等工具,/toolchain_i386/lib为uclibc库。
www.busybox.net下载busybox-1.00,解压
export PATH=/home/xxx/gcc-3.3.x/toolchain_i386/binPATH
make
make dep
make CROSS=i386-linux-
make install
编译完busybox后,不能用系统ldd查看相应程序的动态链接情况,
cd /home/xxx/gcc-3.3.x/toolchain_build_i386/uClibc/utils
make ldd.host
./ldd.host /busybox-1.00/_install/bin/busybox
这时显示的busybox就是链接的uclibc库了。

  我的问题是这里生成的uclibc的toolchain和uclibc的库都是用host上gcc和glibc生成的,也就是说/toolchain_i386/bin/i386-linux-gcc和/toolchain_i386/lib都是通过gcc和glibc生成的,之后再用i386-linux-gcc生成基于uclibc的程序,如果要移植到target上,是把这里的基于host的gcc和glibc编译的uclibc库移植就可以吗,
还是说在target上运行的uclibc库需要再用这里的i386-linux-gcc交叉编译uclibc.0.9.26.tar.gz源文件,重新生成uclibc库以后才能移植?
(在uclibc-0.9.26的make过程中,export PATH=/home/xxx/gcc-3.3.x/toolchain_i386/binPATH
make CROSS=i386-linux-,这样利用i386-linux-gcc生成的uclibc库与gcc和glibc编译的uclibc库相比较,发现前者相应的文件要小一些。)
 楼主| 发表于 2004-12-2 12:16:46 | 显示全部楼层
斑竹及各位高手能否不吝赐教啊?
thx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表