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

标签 c++ linux gdb binutils gnu-toolchain

请特别注意标签部分。

这个决定背后的理由是什么?合并是否会影响构建最新 binutils 和 GDB 的建议方法? (事实上​​ ,当我 checkout 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

关于c++ - 为什么 GNU binutils 和 GDB 合并为一个包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037219/

相关文章:

模板调用之间的 C++ 转换

python - 如何创建一个脚本来获取用户输入并在使用 python 3.6 的终端命令中使用它?

C 大整数转二进制

gdb - 如何在 Eclipse/CDT 中启用断点

c++ 以 'enter' 命中结束循环

c++ - 如何从列表c++中索引字符串中的字符

c++ - 为什么我需要在 C++ 中使用 `size_t`?

linux - 尝试从现有 for 循环中的文件读取

c++ - 使用 GDB 在 Fortran 中调试 MPI 程序

c - 使用 gdb 将地址转换为行