Elf (Executable and Linking Format) merupakan file objek yang dipakai di linux dan sistem operasi turunan unix lainya. 3 macem elf utama yang umumnya ada di sistem2 nix: 1. ELF LSB Relocatable 2. ELF LSB Executable 3. ELF LSB shared object Seperti yang kita ketahui bersama bahwa Dari suatu source code misal dari bahasa c hingga menjadi elf executable akan melalui 3 proses: 1. Proses Kompile 2. Proses Assemble 3. Proses Linking ok untuk jelasnya perhatikan permainan di bawah ini: ============= root@jasaplus:~/elf# uname -a Linux jasaplus ********** #1 SMP ********** MSD 2011 x86_64 root@jasaplus:~/elf# file elz.c elz.c: ASCII C program text ============ ok kita punya suatu source code c dengan nama file elz.c, selanjutnya kita akan kompile menjadi kode assembler dg gcc; ================================ root@jasaplus:~/elf# gcc -S elz.c ================================ setelah kita kompile terciptalah kode2 assembly dengan nama file elz.s: ============= root@jasaplus:~/elf# head -20 elz.s .file "elz.c" .section .rodata .LC0: .string "/usr/bin/perl" .text .globl jalankan .type jalankan, @function jalankan: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 movq %rsp, %rbp .cfi_offset 6, -16 .cfi_def_cfa_register 6 pushq %rbx subq $712, %rsp movl %edi, -708(%rbp) movq $0, -416(%rbp) leaq -408(%rbp), %rbx =================== Selanjutnya kita akan melakukan assemble dari kode asm di atas menjadi suatu file elf lsb relocatable ================== root@jasaplus:~/elf# as elz.s -o elz.o root@jasaplus:~/elf# file elz.o elz.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped ================= kita bisa lihat terciptalah suatu objek elf lsb relocatable setelah kita lakukan assemble dengan as. nah file elf lsb relocatable yang tercipta di atas merupakan suaru objek elf yang isinya kode dan data yang siap dilinking dengan objek file lainya untuk kemudian siap menjadi suatu elf lsb executable atau elf lsb shared object. Proses terakhir adalah linking: ============= root@jasaplus:~/elf# gcc -o elz elz.o root@jasaplus:~/elf# file elz elz: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped ============ setelah dilinking terciptalah suatu elf lsb executable ! untuk mengetahui shared2 object yang dilinking bisa kita cek dg ldd: ========== root@jasaplus:~/elf# ldd elz linux-vdso.so.1 => (0x00007fff583fd000) libc.so.6 => /lib64/libc.so.6 (0x00002b49a6d58000) /lib64/ld-linux-x86-64.so.2 (0x00002b49a6b35000) ============