生成elf文件并非只能用gcc。nasm可以生成各个平台的中间文件和可执行文件。下面我们用nasm来生成hello.o:
先写一个hello.s源文件
section .data
msg: db "hello world!",0ah,0dh;
msglen: equ $ - msg;
section .text
global main
main:
mov eax,4;
mov ebx,1;
mov ecx,msg;
mov edx,14;
int 80h;
mov eax,1;
mov ebx,0;
int 80h;
再用命令:
nasm -f elf hello.s
便可生成hello.o文件,但是这个文件不能够使用gcc的链接器,因为是386和32位的,我们来看下其header信息:
我们来看下其符号表:
可以看到msg和msglen两个定义的变量,并且,nasm自动生成了main符号。