在nasm中编译和链接

时间:2014-03-22 19:46:56

标签: gcc nasm elf i386

我正在尝试链接一些汇编文件,但我遇到了一些问题。我使用nasm并使用以下命令创建目标文件:

nasm -f elf -o task1.o task1.asm

当我尝试将其与其他文件链接时:

gcc -o task1 task1.o asm_io.o

我收到错误:

i386 architecture of input file 'task1.o' is incompatible with i386:x86-64 output

和文件asm_io.o的错误相同。

我的Ubutnu是64位 当我尝试命令时:

nasm -f elf64 -o task1.o task1.asm

我收到的错误是64位模式下不支持指令pushapopa 你能告诉我使用什么指令而不是pushapopa,以及使用什么gcc命令?

1 个答案:

答案 0 :(得分:1)

  

您能否告诉我使用哪些说明代替pushapopa,以及使用哪种gcc命令?

有关如何为PUSHAPOPA编写等效代码的建议,请参阅stackoverflow/6837392

如果您希望在64位主机上构建32位二进制文​​件,则需要明确指定-m32切换到GCC,并且需要安装32位开发环境。 有关在Ubuntu上构建32位程序的更多信息,请参阅discussion about multi-arch supportInstalling Compilers社区维基页面。