• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 在开发板上执行hello,出现Segmentation fault 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 16951
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2010-03-23
最后登录: 2010-06-04
楼主  发表于: 2010-05-31 21:31

 在开发板上执行hello,出现Segmentation fault

编写了个hello入门程序:
#include<stdio.h>
int main()
{
printf("hello!!!");
return 0;
}
arm-linux-gcc编译好了ftp到开发板上,出现:-sh:hello:not found
查看网上说:如果选择 Build BusyBox as a static binary (no shared libs) 方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。

于是,静态编译如:

arm-linux-gcc –static hello.c –o hello
再下载到板子上出现了:Segmentation fault
请问:这是怎么回事?
级别: 新手上路
UID: 22435
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2010-06-01
最后登录: 2010-06-01
1楼  发表于: 2010-06-01 20:18
先检查hello的属性,是不是可执行。执行时试试"./hello"。
级别: 新手上路
UID: 29982
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2010-10-09
最后登录: 2010-10-10
2楼  发表于: 2010-10-10 10:15
我也遇到这个问题了  请问怎么解决啊??????
级别: 圣骑士
UID: 9221
精华: 0
发帖: 376
金钱: 2110 两
威望: 539 点
综合积分: 752 分
注册时间: 2009-09-22
最后登录: 2016-07-04
3楼  发表于: 2010-10-10 11:50
运行chmod +x hello
再运行看看
一起学习,一起进步
级别: 新手上路
UID: 16042
精华: 0
发帖: 47
金钱: 245 两
威望: 49 点
综合积分: 94 分
注册时间: 2010-03-13
最后登录: 2012-03-23
4楼  发表于: 2010-10-12 21:45
你用的编译器和编译内核时用的配置一样么?比如是否都开启了eabi?假如内核开启EABI,而编译器用并没有启用EABI支持就会得到这样的结果。
还有就是文件系统上的动态库和编译用的动态库一致么?
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
5楼  发表于: 2010-10-20 09:09
可能是编译器问题,我使用的是4.1.2,不是4.3.2,编写的QT4程序,没有出现此类问题。另外,需要特别注意内存分配,特别是数组越界或者指针空间不够时,就会出现Segmentation fault。
级别: 新手上路
UID: 28462
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-09-11
最后登录: 2011-11-30
6楼  发表于: 2010-10-28 20:43
应该是编译器版本的问题。
级别: 新手上路
UID: 59575
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2011-11-26
最后登录: 2012-07-02
7楼  发表于: 2011-11-26 22:19
跟我问题一样。是编译器版本的问题。但是不知道具体问题在哪。静态链接。运行时已经不需要依靠库文件支持了。上面这些大侠怎么还说这个
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
8楼  发表于: 2011-11-27 07:40

 回 7楼(陶醉猫) 的帖子

很可能是编译器的ABI类型与开发板上运行的文件系统ABI类型不匹配造成的。旧版的交叉编译器用的是OABI,新版的用的是EABI.
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 58440
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2011-11-07
最后登录: 2017-09-13
9楼  发表于: 2011-11-30 21:17
你在FTP的时候有没用BIN参数?有一次我没有加BIN参数也出现了这个错误,要指定FTP传送是以二进制文件来传的才行
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go