首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash,无法执行二进制文件

bash,无法执行二进制文件
EN

Stack Overflow用户
提问于 2012-01-09 03:15:30
回答 1查看 3.7K关注 0票数 2

我目前正在尝试在我的Trisquel发行版上学习汇编(我猜它在幕后使用Ubuntu?)。由于某些原因,我被困在创建和执行程序集片段的第一步。

代码语言:javascript
复制
.section data

.section text
.globl _start
_start:
movl $1, %eax # syscall for exiting a program
movl $0, %ebx # status code to be returned
int $0x80

当我尝试汇编和链接它以创建可执行文件并运行该可执行文件时,我得到的结果如下所示:

代码语言:javascript
复制
> as myexit.s -o myexit.o && ld myexit.o -o myexit
> ./myexit
bash: ./myexit: cannot execute binary file

我不知道这到底是怎么回事。在搜索之后,似乎这个错误通常会在64位操作系统上执行32位可执行文件时弹出,或者反之亦然,但我的情况并非如此。

下面是fileuname命令的输出:

代码语言:javascript
复制
$ file myexit
myexit: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
$ uname -a
Linux user 2.6.35-28-generic #50trisquel2-Ubuntu SMP Tue May 3 00:54:52 UTC 2011 i686 GNU/Linux

有人能帮我理解这里到底出了什么问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-09 03:32:56

代码语言:javascript
复制
.section text

是不正确的,当您需要将代码放在.text节中时,它会创建一个名为text的节。将其替换为:

代码语言:javascript
复制
.data

.text
.globl _start
_start:
  ...
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8780418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档