首页 > 解决方案 > 有没有办法重建链接到静态库的二进制文件

问题描述

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

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

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

蒂亚!

标签: makefilebuildstatic-libraries

解决方案


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

根据构建系统的复杂性,这可能很难修复,或者只是添加libfoo.a到主二进制文件的依赖项列表中的问题。


推荐阅读