【发布时间】:2015-09-30 22:09:39
【问题描述】:
我正在使用 Kali linux 64 位,我正在尝试执行 Paul Carter 博士网站上的以下程序。 gcc 命令给出错误。我应该在 gcc 命令中使用什么?
nasm -f elf32 array1.asm
root@kali:assembly# gcc -o array1 array1.o array1c.c
array1c.c:9:1: warning: ‘cdecl’ attribute ignored [-Wattributes]
array1c.c:10:1: warning: ‘cdecl’ attribute ignored [-Wattributes]
/usr/bin/ld: i386 architecture of input file `array1.o' is incompatible with i386:x86-64 output
collect2: error: ld returned 1 exit status
【问题讨论】:
-
以 root 身份尝试汇编语言是一个糟糕的想法。 apple.stackexchange.com/a/192422/118588 很好地解释了对所有事情都使用 root 的陷阱,这适用于所有 Unix 操作系统,而不仅仅是 OS X。在尝试 ASM 时更糟,因为您可能不小心进行了意外的系统调用,从而重新启动了系统,或更糟。
-
另请参阅stackoverflow.com/questions/36861903/…,了解使用或不使用 libc 从 asm 源构建 32 位或 64 位二进制文件的各种方法的更完整指南。