所以我正在学习x86 NASM程序集,我正在制作我的第一个小程序。
NASM代码
extern printf
segment .data
prompt1 db "Hello World!", 0 ; Null-terminated
segment .text
global main
main:
pushad
push dword prompt1
call printf
add esp, 4
popad
ret
然后我做nasm -f elf32 HelloWorld.asm
,创建一个HelloWorld.o文件。然后我做gcc -m32 HelloWorld.o -o HelloWorld
。
这会返回错误:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2:错误:ld返回1退出状态
-m32
和elf32
的使用是基于各种其他StackOverflow线程的建议。我已经尝试过安装像i386 GCC和G ++库这样的东西(修复了它说架构错误的问题)。
正如标题所说,这是32位汇编,但我的笔记本电脑是64位。
提前致谢。
答案 0 :(得分:3)
我通过安装libgcc32-4.8-dev修复了这个问题。我已经安装了gcc-multilib,所以也许两者的组合就是我所需要的。