首先是要认识一下ELF文件的定义变量所占的空间。
1文件头
文件头采用了一个结构体的定义方式。
2.segment与section的区别
在汇编语言中的段,不论编号是segment还是section,都是ELF文件里的节。在ELF文件中,把具有相同属性的节放在一起,形成了程序头表,当他们被加载到内存时,就是变成了段描述符所对应得代码段数据段。
在按照书中实际历程时,在UBuntu16.04下ld链接发生错误:ld: i386 架构于输入文件 1.o与 i386:x86-64 输出不兼容
查明原因为:32位余64位程序不符
解决方法:nasm -f elf32 one.asm -o 1.o
nasm -f elf32 2.asm -o 2.o
ld -m elf_i386 1.o 2.o -o 12
使用readelf -e ./12读取elf文件头: