У меня 64-битная операционная система Ubuntu, и я изучаю 32-битную сборку. Я пытаюсь скомпилировать эти два файла:
кв.с:
#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
#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
у меня работает, а у вас не работает? - person AusCBloke   schedule 22.12.2011