Linux bash,can';不执行二进制文件

Linux bash,can';不执行二进制文件,linux,ubuntu,assembly,Linux,Ubuntu,Assembly,我目前正在尝试学习Trisquel发行版的汇编(我猜它是在后台使用Ubuntu的?)。出于某种原因,我被困在创建和执行程序集片段的第一步 .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 当我尝试组装并链接它以创建可执行文件并运行可执行文件时,我得

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

.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
当我尝试组装并链接它以创建可执行文件并运行可执行文件时,我得到如下结果:

> as myexit.s -o myexit.o && ld myexit.o -o myexit
> ./myexit
bash: ./myexit: cannot execute binary file
我不确定这里到底发生了什么。在四处搜索之后,似乎在尝试在64位操作系统上执行32位可执行文件时,通常会弹出此错误,反之亦然,但我的情况并非如此

以下是
文件
uname
命令的输出:

$ 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
有人能帮我弄清楚这里到底出了什么问题吗?谢谢

.section text
不正确,当您需要代码位于
.text
部分时,会创建一个名为
text
的部分。替换为:

.data

.text
.globl _start
_start:
  ...

可执行位在那里,对吗?@Uku:是的,否则它通常会拒绝
权限
error我也这么认为,但只是检查一下。哇,非常感谢!将
数据
替换为
.data
并将
文本
替换为
.text
后,代码就像一个魔咒一样工作。