What am I doing wrong?
Nothing.
It sounds like your GCC is configured to build -pie
binaries by default. These binaries really are shared libraries (of type ET_DYN
), except they run just like a normal executable would.
So your should just run your binary, and (if it works) not worry about it.
Or you could link your binary with gcc -no-pie ...
and that should produce a non-PIE
executable of type ET_EXEC
, for which file
will say ELF 64-bit LSB executable
.