正如标题所示,是CentOS Linux的gcc
包含的binutils
? 如果我安装gcc rpm包,是否还需要安装binutils
? 更重要的是, gcc
和g++
都默认在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
只是一个驱动程序(启动其他可执行文件,如cc1
, as
, ld
…)
as
和ld
程序由binutils
提供 – 需要编译。
所以binutils
软件包是gcc
软件包的一个必需的依赖项(还有很多其他的依赖项,可能包括libc
和libc-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)。