With two files, one compiled and linked with gcc
and the other manually with nasm
and ld
I get
- ELF 32-bit LSB shared object ...
- ELF 32-bit LSB executable ...
What's the difference between these two things? I can see with readelf -h
that one is
- Type:
DYN (Shared object file)
- Type:
EXEC (Executable file)
I can see these documented on Wikipedia as ET_DYN
and ET_EXEC
. What are the practical differences between these two?