私は64ビットのUbuntuオペレーティングシステムを使用しており、32ビットのアセンブリを学習しています。私はこれらの2つのファイルをコンパイルしようとしています:
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.