各位朋友好,小弟初学嵌入式linux不久,在移植应用程序后,调试运行时遇到如下问题,
attempt to access beyond end of device
01:00 rw=0 want=4259 limit=4096
input/output error
程序就是那个简单的hellloworld程序。我先给大家介绍一下我的嵌入式linux背景:
1 内核是裁剪的linux-2.4.20,最后是压缩成bzImage映像,大小1.3M 左右;
2 根文件系统是用busybox-1.5.1制作的,编译busybox时选择的静态库编译,并且自己编写了inittab, fstab, 以及 rcS文件,文件系统是initrd.img格式,压缩后大小1.2M左右;
3 bootloader是grub。
需要说明的是我的嵌入式linux没有跨平台编译,这个系统仍然是运行在i386 PC机子上的系统,我将上面的内核,根文件系统,Grub 制作在我的一个64M USB盘里面,并在我的台式机上启动,能正常启动进入命令行界面,ls,cd,vi等命令皆运行正常。
4 再说helloworld程序的问题,我在RH9下,编辑,编译(gcc-3.2.2),运行正常。然后将这个可执行文件hello放在根文件系统的/usr/bin下,并且将hello运行所需的动态库(用ldd hello 命令得到运行hello所依赖的两个动态库)放在了/lib下,然后重新编译这个根文件系统,并将这个根文件系统移植到USB盘里。
再次启动运行,一切正常,进入到 /usr/bin下,有可执行文件hello,然后使用运行命令
./hello
则出现上面所显示的问题
attempt to access beyond end of device
01:00 rw=0 want=4259 limit=4096
input/output error
请大家不吝赐教,这是什么问题所引起的,该如何解决。谢谢!!!
另:另有一个疑问就是,我在编译busybox的时候选择了静态库编译,那么我在移植应用程序的时候是否还必须要用ldd 命令查出hello运行依赖的动态库,并添加到/lib下面去啊???起初的时候我是没有做这一步的,只是添加了hello到/usr/bin下,但是重新制作了系统后运行没有成功,后查资料,做了这一步 , 出现了上述问题。
推到她 于 2013-08-21 19:36:19发表:
我们也遇到了input/output error,最后验证是磁盘老化的问题!
dqkong1 于 2010-08-12 15:34:53发表:
大家帮小弟 分析一下啊 不胜感激!
也查了一些资料,有的说“如果用了ramdisk, 在启动配置文件里,增大ramdisk_size!!”,也有的说可能是“硬盘问题”
但我自己感觉可能是根文件系统的原因,毕竟是自己裁剪了内核,制作了根文件系统(ramdisk盘),根据资料修改了 /etc/inittab /etc/fstab /etc/profile /etc/init.d/rcS等文件的内容。系统是能正常启动的,就是加了这个hello(已经在pc上面 用gcc3.2.2编译好了的可执行文件),再进入到这个系统中,用./hello 运行时出错。
请大家 做嵌入式linux裁剪 移植的 不吝赐教。小弟会根据已经重新做实验的。谢谢!!!!!