0 c linker gcc compilation cc
我正在尝试编写一个程序,它将使用我可以在多个目录中轻松修改和编译的策略来玩游戏.游戏的大多数源文件都是不可变的(即即使策略被更改,它们也保持不变).说我的源文件是a.c, b.c, c.c, d.c, e.c,a.c通过d.c是不可变的,并且e.c是不同策略之间唯一不同的文件.另外,a.c调用e.c,所以如果不调用未定义的函数错误,它们就不能完全独立编译.
有没有什么办法来编译(CC/GCC /等)a.c通过d.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
Run Code Online (Sandbox Code Playgroud)
我可以将everything.o复制到不同的目录,以便我可以让程序运行不同的策略,而不是将所有四个(在我的情况下,~20个)文件复制到每个目录中?
您可以单独编译每个对象并将它们添加到archive:
gcc -c foo.c bar.c baz.c
ar cr shared.a foo.o bar.o baz.o
Run Code Online (Sandbox Code Playgroud)
最后使用您的额外源文件进行编译:
gcc extra.c shared.a -o myprogram
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅使用GNU归档程序创建库.