gpt4 book ai didi

c - 在 gcc/cc 中聚合源文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:41 25 4
gpt4 key购买 nike

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

有没有办法将(cc/gcc/等)a.cd.c 编译成一个文件,everything.o,然后我可以使用缺少的 e.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 个)文件复制到每个目录中?

最佳答案

您可以单独编译每个对象并将它们添加到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获取更多信息。

关于c - 在 gcc/cc 中聚合源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com