linux - 如何在 64 位机器上使用 gcc 编译 32 位 .o 文件?

标签 linux gcc assembly nasm

正在尝试学习 NASM 程序集。我有一台装有 Ubuntu 的 64 位机器。最近我决定测试一下 pushpop 指令。我这样做:

nasm -felf64 Test.asm

显然它们在 64 位模式下不受支持。好吧,没问题,那我只做 32:

nasm -felf Test.asm

现在,一如既往,

gcc Test.o

但它现在告诉我

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

我不太明白这里的错误。如果显然我无法编译 32 位程序,我该如何在我的 64 位机器上测试 pushpop

最佳答案

“-m32”怎么样? 而且我认为您需要关心依赖库(例如 libc),请参阅:Use 32bit shared library from 64bit application?

关于linux - 如何在 64 位机器上使用 gcc 编译 32 位 .o 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778010/

相关文章:

linux - USSD 网关实现

c - GCC 中 -ffixed-<reg> 标志是否总是有问题?

在 OS X 上使用错误版本的 GCC 构建 Python

linux - execve shellcode linux段错误

c - 微软怎么能说 WinAPI 中一个字的大小是 16 位呢?

python - 禁用特定文件的缓存/缓冲区 (Linux)

linux - 在 SIGINT 上杀死后台进程

linux - 检查 Linux/Ubuntu/Centos 中的文件历史记录

c - 注意 : in expansion of macro 'A_MACRO'

linux - 获取 ASCII 数字值