从静态 C 库的源代码中提取函数定义以避免库编译

Pulling Function definitions out of a static C library's source code to avoid library compilation

我有一个程序使用了一个巨大的库,称之为libhuge(编译需要很长时间)。我的 Makefile 首先编译 libhuge 并存档。然后将我的程序源代码编译成目标文件 gcc -c $CFLAGS $OBJS

然后将它们全部链接到 libhuge.a。我尝试在不链接到该库的情况下进行编译,发现很少(12 个函数)缺少定义。是否可以从我的 libhuge 中自动提取这些定义,并只编译目标文件中的那些函数,这样我就不必编译整个库?

这么说吧!我有一些功能想从库中进一步研究。我如何找到它们的定义?

在您的 Makefile 中添加一个规则来检查 libhuge.a,只有当它不存在时才构建 libhuge.a 库:

<path>/libhuge.a:
    <commands to build libhuge.a>

<your program>: <path>/libhuge.a
     <commands to build your code>

第一次libhuge.a不存在时,会构建整个libhuge.a。但是一旦库存在,它就不会再构建它了。