How can I generate an ELF file with GCC?

compilation, elf, executable, file-format, gcc

Solution

The compiler (i.e. `gcc` or `g++`) will invoke the linker (`ld`) which produces an ELF executable.

In practice, you will use a builder program (like `make`) to drive `gcc` commands. See this answer.

The default output file for `gcc` is still named `a.out` (for historical reasons) but is an ELF file. And you really want to ask `gcc` to output an executable with a more fancy name.

Simple example, you code a single-file `hello-world.c` program. You can compile it with e.g.

gcc -Wall -g hello-world.c -o hello-world-bin

(order of arguments to `gcc` matters a lot!)

And the produced `hello-world-bin` is an ELF executable. Check with:

file hello-world-bin

Then run it with:

./hello-world-bin your arguments to it

Later, learn how to use the `gdb` debugger on it.

See also this and that answers.

Problem

I am writing C and C++ code on Linux OS and I am using GCC. After finishing my code, I would like to generate an ELF file. I just can generate `a.out` file and I don't need it. How can I get an ELF file? What generates the ELF file?

Original source

Related problems