Compile multiple C source fles into a unique object file
c, gcc, linker
Solution
You can't compile multiple source files into a single object file. An object file is the compiled result of a single source file and its headers (also known as a translation unit).
If you want to combine compiled files, it's usually combined into a static library using the `ar` command:
$ ar cr libfoo.a file1.o file2.o file3.o
You can then use this static library when linking, either passing it directly as an object file:
$ gcc file4.o libfoo.a -o myprogram
Or linking with it as a library with the `-l` flag
$ gcc file4.o -L. -lfoo -o myprogram
Problem
I have some C source files and I am using `gcc`. I basically want to compile all of them and create one single object file. When I try: ``` gcc -c src1.c src2.c src3.c -o final.o ``` I get: ``` gcc: cannot specify -o with -c or -S with multiple files ``` If I try: ``` gcc -c src1.c src2.c src3.c ``` I get three different object files. How can I tell `gcc` to compile all files to return one single object file (I also want to specify its name)? Thank you. Maybe there is another more common approach to this, in this case please tell me.