gpt4 book ai didi

linux - bash,无法执行二进制文件

转载 作者:太空狗 更新时间:2023-10-29 11:46:48 24 4
gpt4 key购买 nike

我目前正尝试在我的 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 位可执行文件时通常会弹出此错误,反之亦然,但对我而言并非如此。

这是 fileuname 命令的输出:

$ 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:
...

关于linux - bash,无法执行二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8780418/

24 4 0
文章推荐: linux - 不使用共享内存的 Perl IPC?
文章推荐: javascript - 如何从 html