将多个C文件编译为单个非可执行对象文件

时间:2016-12-26 19:01:43

标签: c gcc compilation linker

我有2个文件:

  

A.C

  

B.c

他们两个都没有主要功能。 如何编译并将它们链接到一个名为D.o?

的单个非可执行文件中

2 个答案:

答案 0 :(得分:5)

您可以先将它们编译为单独的目标文件,然后通过ld -r将这些文件与保留的可重定位信息相关联:

ld -r tmp1.o tmp2.o -o tmp.o

答案 1 :(得分:1)

如果你想要一个不可执行的文件,@ yugr解决方案就好了。但是,如果根本不需要,这里是如何链接多个文件并创建单个目标文件。

GCC
gcc -o d.o a.c b.c

请注意,-o用于指定目标文件的名称。

但是,如果你想做得更好,你应该看看makefile,并为每个源文件创建一个目标文件,然后一起编译它们。

小例子:

exe:    a.o b.o
        gcc -o exe a.o b.o

a.o:    a.c
        gcc -c a.c

b.o:    b.c
        gcc -c b.c