The command-line option -c is used to compile a source file to an object file. For example, the following command will compile the source file main.c to an object file:
$ gcc -Wall -c main.c
This produces an object file main.o containing the machine code
for the main
function. It contains a reference to the external
function hello
, but the corresponding memory address is left
undefined in the object file at this stage (it will be filled in later
by linking).
The corresponding command for compiling the hello
function in the
source file hello_fn.c is:
$ gcc -Wall -c hello_fn.c
This produces the object file hello_fn.o.
Note that there is no need to use the option -o to specify the name of the output file in this case. When compiling with -c the compiler automatically creates an object file whose name is the same as the source file, but with .o instead of the original extension.
There is no need to put the header file hello.h on the command
line, since it is automatically included by the #include
statements in main.c and hello_fn.c.