【发布时间】:2017-10-08 06:43:18
【问题描述】:
我对汇编编程很陌生。我在 Windows 7(64 位)平台上使用 NASM 2.11.05 来运行一些示例代码。当我尝试从我的汇编代码中调用标准 C 函数时,就会出现问题。这是我的汇编源代码:
global main
extern puts
section .text
main:
push message
call puts
ret
message:
db "Hola, mundo", 0
当我用 NASM 编译时,我使用这个命令行:nasm -fwin32 file.asm 产生file.obj。现在,当我尝试将它与 ld 或 gcc 链接时,我不断收到错误消息。我尝试了一些事情:
gcc -m32 -nostartfiles file.obj(给出输入文件的i386:x86-64架构与i386输出不兼容的错误)。
ld file.obj(错误未定义对 puts 的引用)。
谁能指导我如何解决这个问题?
【问题讨论】:
-
在基于 Linux 的操作系统上,这适用于我,使用您的原始代码没有位 32 。 nasm -felf32 dedduwage_001.s -o dedduwage_001.o && gcc dedduwage_001.o -o dedduwage_001 -m32.