免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2893 | 回复: 4
打印 上一主题 下一主题

动态编译busybox ,板子不能启动,求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-16 13:48 |只看该作者 |倒序浏览
动态编译busybox,制作根文件系统后,板子不能启动,启动时的错误信息如下:
Time: timebase clocksource has been installed.
Generic RTC Driver v1.07
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
serial8250.0: ttyS0 at MMIO map 0xe0004500 mem 0xd1000500 (irq = 42) is a 16550A
serial8250.0: ttyS1 at MMIO map 0xe0004600 mem 0xd1002600 (irq = 42) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 32768K size 1024 blocksize
fs_enet.c:v1.0 (Aug 8, 2005)
BB MII Bus: probed
CPM MAP addres is e0080000, io d1100000
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
      device=eth0, addr=192.168.1.100, mask=255.255.255.0, gw=255.255.255.255,
     host=192.168.1.100, domain=, nis-domain=(none),
     bootserver=255.255.255.255, rootserver=192.168.1.1, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.1
Looking up port of RPC 100005/1 on 192.168.1.1
VFS: Mounted root (nfs filesystem).
Freeing unused kernel memory: 144k init
/sbin/initKernel panic - not syncing: Attempted to kill init!
: error while loRebooting in 180 seconds..ading shared libraries: libm.so.6: cannot open shared object file: No such file or directory
已经尝试过的操作:
1.使用静态编译的busybox,替换/bin下面的busybox,能够启动
2.交叉工具链下所有的.so(包括对应的链接文件)已经拷贝到根文件系统的/lib下面
3.$ readelf -a busybox|grep "Shared library"
0x00000001 (NEEDED)                     Shared library: [libm.so.6]
0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
0x00000001 (NEEDED)                     Shared library: [libc.so.6]
这几个库及对应的链接文件都在/lib下
4.在已启动的shell下,同样将交叉工具链的库拷贝到/lib目录下,运行动态编译的busybox可以成功
5.虚拟机环境下动态编译的busybox+拷贝库可以正常启动

busybox版本1.13.1, 1.10也试过,同样不行
交叉编译器4.1.2

在论坛上看到有同样的帖子,不知道最后解决没有

论坛徽章:
0
2 [报告]
发表于 2009-02-16 15:22 |只看该作者
你拷贝的可能只是一个符号连接,没有把库本身也考过去~

论坛徽章:
0
3 [报告]
发表于 2009-02-16 16:13 |只看该作者
我检查了一下,库文件已经拷过去了,这点可以验证:
用静态编译的busybox替换/bin/busybox,运行起来,在shell下运行动态编译的 /bin/busybox.dyn ls 可以成功

论坛徽章:
0
4 [报告]
发表于 2009-02-16 17:33 |只看该作者
etc目录下建立 ld.so.conf 配置文件,将库的路径加入试试

论坛徽章:
0
5 [报告]
发表于 2009-02-18 13:54 |只看该作者
解决了,工具链的问题.
我使用的工具链是自己编译的,用readelf工具查看工具链中的m库和c库等文件,interpreter(ld-linux.so)路径不对,在nfsroot下建立/opt/xxx 把lib放这级目录下就正确了
知道怎么在编译动态库时设置该路径吗?正确的应该是/lib/ld-linux.so 实际却是/opt/xxx/ld-linux.so
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP