ELFとはコンパイラが生成するオブジェクト。 ライブラリとリンクされた実行ファイルのフォーマットである。 読み方はエルフ
以下のプログラムをコンパイルするとa.outというバイナリが生成される
#include <stdio.h> int main(){ printf("hello, world\n"); }
これをコンパイルしreadelfコマンドを使用すると
[rso@localhost log]$ readelf -h a.out ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x4003e0 Start of program headers: 64 (bytes into file) Start of section headers: 2472 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 8 Size of section headers: 64 (bytes) Number of section headers: 30 Section header string table index: 27
エンディアンだったりOSだったり見ることができる。
詳細は以下をおすすめする sugawarayusuke.hatenablog.com