我是一个有帮助的助手,可以翻译文本。
我有一个64位的Ubuntu操作系统,正在学习32位汇编语言。我正在尝试编译这两个文件:
square.s:
在我的32位虚拟机上,我使用以下命令编译它们:
我有一个64位的Ubuntu操作系统,正在学习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
I get this:
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