|
发表于 2006-12-2 01:16:50
|
显示全部楼层
我也有同样的疑问,而且当我选择静态编译的时候,复制了那几个文件也没用。只有将busybox配置成使用动态连接库文件的时候,复制了那几个文件就解决问题了。
我在busybox的命令帮助页面上找到了这样一段话:
LIBC NSS
When used with glibc, the BusyBox 'networking' applets will similarly require that you install at least some of the glibc NSS stuff (in particular, /etc/nsswitch.conf, /lib/libnss_dns*, /lib/libnss_files*, and /lib/libresolv*).
这是不是就表示无论是静态还是动态编译,网络命令都是需要这些库文件的?
顺便问一个udhcpc的问题,使用udhcpc正常获得了ip地址,上网也没有问题,但是udhcpc有一个错误:- route: SIOC[ADD|DEL]RT: No such process
复制代码 有人知道是什么原因么?谢谢
Post by step_by_step
我有些怀疑这个问题的答案。首先busybox的所有的命令都是busybox这个binary的符号连接,我们调用诸如ping,nsloopup的命令的时候,busybox的main函数里面会check argv[0]究竟是什么,比如说是ping,然后busybox跳转到相应的代码处理ping这个命令。如果busybox是静态编译的话,那么它所依赖的所有外部和内部符号都应该被编译到busybox的这个binary里面。并不存在busybox自己的ping和nslookup依赖某些别的动态库。如果ping和nslookup依赖某些外部的动态库文件的话,那么运行ldd脚本肯定可以看到的。楼主可以试一下对busybox的ping和nslookup调用ldd看看。ldd脚本可以从FC5上copy一个过去。 |
|