binutils和gcc有什么关系?

正如标题所示,是CentOS Linux的gcc包含的binutils ? 如果我安装gcc rpm包,是否还需要安装binutils ? 更重要的是, gccg++都默认在Centos中安装?

gcc包可能包含编译器本身,例如文件/usr/bin/gcc和目录/usr/lib/gcc/x86_64-linux-gnu/4.8/ (包含cc1可执行文件)。

/usr/bin/gcc程序启动cc1 (或cc1plus等)来编译你的源代码*.c ,并且将cc1生成的汇编代码(由cc1产生)转换成目标文件*.o ,最后ld链接。

gcc -v编译一下,了解发生了什么,它会显示真正执行的二进制文件。 请注意, gcc只是一个驱动程序(启动其他可执行文件,如cc1asld …)

asld程序由binutils提供 – 需要编译。

所以binutils软件包是gcc软件包的一个必需的依赖项(还有很多其他的依赖项,可能包括libclibc-devel ,但是如果你真的希望你可以使用一些其他的libc,像MUSL libc ; libc通常提供动态链接器 /lib/ld-linux.so* )。

了解如何使用rpm (在Ubuntu和Debian上的Centos或dpkg上)查询软件包之间的依赖关系。

对于开发,你可能想要一些其他的包。 Debian具有构建必要的虚拟包。 可能CentOS有一个相同的。 你一定要使用一些库(你需要为它们开发软件包,例如在Debian libcurl4-gnutls-dev中使用libcurl HTTP客户端库进行开发)。 另请参阅这个答案 (对于Ubuntu和Debian,但是可以将其改为适用于CentOS)。