在gcc / cc中聚合源文件

时间:2013-11-06 20:02:40

标签: c gcc compilation linker cc

我正在尝试编写一个程序,它将使用我可以在多个目录中轻松修改和编译的策略来玩游戏。游戏的大多数源文件都是不可变的(即,即使策略被改变,它们也保持不变)。假设我的源文件是a.c, b.c, c.c, d.c, e.c,其中a.cd.c是不可变的,e.c是不同策略之间唯一不同的文件。此外,a.c调用e.c,因此如果不调用未定义的函数错误,则无法完全编译它们。

有没有办法将(cc / gcc / etc。)a.cd.c编译成单个文件everything.o,然后我可以用缺少的{{1}编译}}?

e.c

我可以将everything.o复制到不同的目录中,以便我可以让程序运行不同的策略,而不会将所有四个(在我的情况下,~20个)文件复制到每个目录中?

1 个答案:

答案 0 :(得分:5)

您可以单独编译每个对象,并将它们添加到archive

gcc -c foo.c bar.c baz.c
ar cr shared.a foo.o bar.o baz.o

最后用你的额外源文件编译:

gcc extra.c shared.a -o myprogram

有关详细信息,请参阅Creating a library with the GNU archiver