我目前正在嘗試學習我的Trisquel發行版(我猜是在引擎蓋下使用Ubuntu?)上的程序集。出於某種原因,我被困在創建和執行程序集片段的第一步。bash,無法執行二進制文件
.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位可執行文件時彈出此錯誤,反之亦然,但這種情況並非如此。
這裏是file
輸出和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
有人可以幫助我瞭解究竟是怎麼回事錯在這裏?謝謝。
可執行位在那裏,對嗎? – 2012-01-08 19:17:48
@Uku:是的,否則它通常會給予'拒絕的權限'錯誤 – sasuke 2012-01-08 19:23:39
我自己這麼想,但只是檢查。 – 2012-01-08 19:25:13