有没有办法重建链接到静态库的二进制文件

时间:2018-09-28 18:18:45

标签: makefile build static-libraries

我正在使用Makefile在RHEL上构建的软件上工作。构建系统同时生成.a(静态库)和.so(动态库)。这些库是大型程序的独立组件。

如果我更改二进制代码的源代码并运行构建,我将重建二进制文件,一切都会很好。但是,如果我更改.a库(生成该库的文件之一)中的源代码并尝试进行构建,则构建系统将仅重新生成该库。它不会重新链接.a文件所链接的二进制文件。

是否可以使用任何特殊标志来强制make命令重新链接需要重新链接的二进制文件?

TIA!

1 个答案:

答案 0 :(得分:1)

make只是执行生成文件的工具。实际的构建规则是makefile的一部分,这取决于makefile的作者编写正确的rules。在您的情况下,makefile作者似乎忽略了将静态库列为构建二进制文件的规则中的前提条件(依赖项)。这意味着如果静态库发生更改,make不会自动重新链接二进制文件。

取决于构建系统的复杂性,这可能很难修复,也可能只是在主二进制文件的依赖项列表中添加libfoo.a即可。