【问题标题】:Aggregating Source Files in gcc/cc在 gcc/cc 中聚合源文件
【发布时间】:2013-11-18 06:07:13
【问题描述】:

我正在尝试编写一个程序,该程序将使用我可以在多个目录中轻松修改和编译的策略来玩游戏。游戏的大多数源文件都是不可变的(即即使策略改变,它们也保持不变)。假设我的源文件是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,然后我可以使用缺少的 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

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

【问题讨论】:

    标签: c gcc compilation linker cc


    【解决方案1】:

    您可以单独编译每个对象并将它们添加到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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-08
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2020-08-01
      相关资源
      最近更新 更多