问题一:
基于busybox-1.16.1制作了根文件系统,烧录到设备端后,只能执行busybox编译出来的命令,非busybox 命令或者其它可执行的应用程序在手动运行时都报错!
现象:执行自己的APP应用程序时报如下错误:
# ./test
# -sh:./arm-test: input/output error。
其中test是最简单的测试,程序体如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, char *argv[ ])
{
fprintf(stderr, "Test for Root FileSystem: %s, %s, %d.\n", __FILE__, __func__,__LINE__);
return 0;
}
后来检查才发现,是我在制作根文件系统时,系统/lib下的库文件用错了,刚开始我不是从SDK开发包中的xxx/toolchain/lib/目录下获取系统所依赖的库文件,而是从另一台设备中copy其lib目录下的文件,然后直接放到我的设备中用来测试,结果导致系统启动后加载的库与程序运行时所依赖的库不匹配,所以出现了”input/output eror“的错误。
使用SDK中编译工具链所在目录下的lib目录下的文件,重新制作了根文件系统,问题解决!
问题二:
linux环境下运行用户态程序时,出现:Bus error.
出现这个错误,是因为在更新应用程序所依赖的一个libxxx.so文件的时候,这个动态库在生成的时候所使用编译工具链用错了,导致该动态库文件与我的设备系统不匹配,所以出现该错误。
重新生成系统对应的库,更新之后,问题解决