- 论坛徽章:
- 0
|
各位朋友好,小弟初学嵌入式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, 制作在我的一个分区大小为540M 硬盘里面,并在我的台式机上启动,能正常启动进入命令行界面,ls,cd,vi等命令皆运行正常。
4 再说helloworld程序的问题,我在RH9下,编辑,编译(gcc-3.2.2),运行正常。然后将这个可执行文件hello放在根文件系统的/usr/bin下,并且将hello运行所需的动态库(用ldd hello 命令得到运行hello所依赖的两个动态库)放在了/lib下,然后重新编译这个根文件系统,并将这个根文件系统移植到硬盘里。
再次启动运行,一切正常,进入到 /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下,但是重新制作了系统后运行没有成功,后查资料,做了这一步 , 出现了上述问题。 |
|