日期:2014-05-16  浏览次数:20849 次

ARM板上运行fopen函数出错
代码:
char filename[20]="test.txt";
char buf[100];
FILE *fp;
fp = fopen(filename,"w+b");
memset(buf,0,100);
strcpy(buf,"Hello World!");
int i= fwrite(buf,sizeof(buf),1,fp);
if( i!=-1)
{
  printf("fwrite OK!\n");;
}
fclose(fp);

当我用gcc编译的时候,在LINUX里运行没有问题。可以正常的创建test.txt文件,也写入了相关的内容。
但是我用arm-linux-gcc编译成功了,在ARM板上运行的时候出错:SEGV 
求大神们帮个忙理解一下!万分感谢!

------解决方案--------------------
帮顶,是不是因为fopen是标准函数库,你可以试下底层函数,例如open。
------解决方案--------------------
gdb跟踪下看看哪里SEGV了,另外你file下你的可执行文件看看格式正确不?
------解决方案--------------------
gdb 调试一下,看看具体的报错语句是哪个
------解决方案--------------------
用Linux 库函数 open
------解决方案--------------------
请检查fp是否为null
------解决方案--------------------
你先创建一个text.txt文件,在运行程序试试看……然后再接着分析你的问题
------解决方案--------------------
用gdb调试,板子上跑gdbserver可以通过网口远程调试。
------解决方案--------------------
探讨
引用:

gdb跟踪下看看哪里SEGV了,另外你file下你的可执行文件看看格式正确不?


格式肯定没有问题,确定是交叉编译后的可执行文件。你们说说有没有可能是权限的问题呢?如果真是权限的问题,那要怎么改呢?