为什么 GNU binutils 和 GDB 合并为一个包?

Why were GNU binutils and GDB merged as one package?

请特别参阅 标签 部分。

这个决定背后的理由是什么?合并是否会影响构建最新 binutils 和 GDB 的建议方法? (事实上​​ ,当我查看 binutils-2_25_1 和 运行 make all && make install 时,我也得到了 gdb。)

我做了转换。我将它们加入存储库的原因部分是历史原因,部分是实际原因。

从历史上看,gdb 和 binutils 几乎一直在一起。当它们在 Cygnus 中维护时,它们位于单个源代码树(称为 "devo")中。然后,后来,当 sourceware.org 成立时,他们共享了一个存储库(称为 "src")。您可能没有注意到这一点,因为存储库使用 CVS 模块让开发人员只检查树的一部分。

实际上,gdb 和 binutils 共享很多代码。他们共享他们的构建基础设施(configure 等);他们共享支持库(libibertyinclude)目录;他们共享 BFD 库;他们共享操作码库。对我来说,将它们放在一起更有意义,既可以避免不断地来回合并(这已经对使用 GCC 的某些组件完成了,这真的很痛苦),也可以尽量减少对一个项目进行负面更改的问题影响对方。例如,至少在理论上,在 BFD 上进行常规开发的人应该同时构建 gdb binutils。

共享存储库使用的顶级 configure 脚本允许开发人员使用 --disable-DIR 禁用任何特定目录。例如,如果您不想构建 gdb,则传递 --disable-gdb.