0

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

有什么方法可以将(cc/gcc/etc.)编译成一个文件,然后我可以用缺少的文件进行编译a.c吗?d.ceverything.oe.c

    > <command here> everything.o a.c b.c c.c d.c
    > cc -g -o e.o e.c
    > cc -g -o foo.o everything.o e.o

在哪里我可以将everything.o复制到不同的目录中,这样我就可以让程序运行不同的策略,而无需将所有四个(在我的情况下,大约20个)文件复制到每个目录中?

4

1 回答 1

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

有关更多信息,请参阅使用 GNU 归档器创建库

于 2013-11-06T20:10:18.757 回答