我有一些 C 源文件,我正在使用 gcc
。我基本上想编译所有这些并创建一个单一的目标文件。当我尝试时:
gcc -c src1.c src2.c src3.c -o final.o
我得到:
gcc: cannot specify -o with -c or -S with multiple files
如果我尝试:
gcc -c src1.c src2.c src3.c
我得到三个不同的目标文件。我如何告诉 gcc
编译所有文件以返回一个目标文件(我还想指定它的名称)?谢谢。
也许还有另一种更常见的方法,在这种情况下请告诉我。
最佳答案
您不能将多个源文件编译成一个目标文件。目标文件是单个源文件及其 header (也称为 translation unit )的编译结果。
如果要合并编译后的文件,一般使用ar
合并成静态库。命令:
$ ar cr libfoo.a file1.o file2.o file3.o
然后您可以在链接时使用这个静态库,或者直接将其作为目标文件传递:
$ gcc file4.o libfoo.a -o myprogram
或者使用 -l
标志将其作为库链接
$ gcc file4.o -L. -lfoo -o myprogram
关于将多个 C 源文件编译成一个唯一的目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182176/