我有一個64位的Ubuntu操作系統,我一直在學習32位彙編。我試圖編譯這兩個文件:在Linux 64位上組合C和彙編(32位代碼)
square.s:
#square.s
.section .text
.globl sqr
.type sqr, @function
sqr:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
imull %eax, %eax
popl %ebp
ret
的main.c:
//main.c
#include <stdio.h>
extern long sqr(long);
int main(int argc, char* argv[])
{
long squared = sqr(10);
printf("%lu\n", squared);
return 0;
}
在我的32位虛擬機我用這個命令
gcc main.c square.s -o test
它們編
它工作。我遇到的問題是我想在我的64位機器上編譯這些文件。我嘗試了幾種編譯這些文件的方式,但都沒有成功。 任何人都可以指向正確的方向嗎?有沒有這樣做的選擇?我試過-m32但這並不奏效。
當我這樣做:
gcc -m32 -o test main.c square.s
我得到這個:
In file included from /usr/include/stdio.h:28:0,
from main.c:1:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
'gcc -m32 -o test main.c square.s'適合我,它怎麼沒有爲你工作? – AusCBloke 2011-12-22 02:48:27
我不確定...讓我再次檢查 – 2011-12-22 02:49:18
OT但我認爲推送和彈出是不必要的 – 2013-08-15 02:24:25