1. end of file not at end of a line; newline inserted ------------------as编译.s文件时.
英文的意思就是说文末没有换行符。Unix文档的回车换行符是一个字符\n,Windows的是分别的两个\n\r,
解决方法:在文件结尾回车一下.
2. invalid instruction suffix for `pop' ------------------as编译.s文件时.
invalid instruction suffix for `push'
原因是 64 位系统和 32 位系统的差别引起的
解决方法为:
在代码开头添加 .code32 即可
3. error: instruction not supported in 64-bit mode --------------nasm编译.asm文件时.
错误:在64位模式下不支持指令
解决方法为: 在elf后加注32位模式编译. 以下的XX代表文件名字.
nasm -f elf32 XX.asm -o XX.o
4. ld: i386 架构于输入文件 问候.o 与 i386:x86-64 输出不兼容 --------------nasm编译.asm文件时.
解决方法为: 加上-m 参数, 并且后接 elf_i386 即按32位模式运行.
ld -m elf_i386 -s -o XX XX.o
如果仍报错,No such file or directory
> compilation terminated.
这应该是缺少构建32 位可执行程序缺少的包,使用以下指令安装:即是让你的电脑可以兼容32位程序.
sudo apt-get install libc6-dev-i386
5. unknown pseudo-op 伪指令不可中文化 ----------------as编译.s文件时.