binutils和gcc之间的关系是什么?

时间:2014-01-19 06:32:41

标签: c++ linux

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

1 个答案:

答案 0 :(得分:5)

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

/usr/bin/gcc程序启动cc1(或cc1plus等...)来编译您的源代码*.c,还as来翻译{{ 1}} - 生成的汇编代码(由cc1生成)到目标文件cc1中,最后*.o生成链接。

使用ld编译一次以了解正在发生的事情,它将显示真正执行的二进制文件。请注意,gcc -v只是一个驱动程序(启动其他可执行文件,如gcccc1as ...)

ldas程序由ld提供 - 这是编译所需的。

因此binutils包是binutils包的必需依赖项(包含许多其他依赖项,可能包括gcclibc,但是如果你真的想要你可以使用其他 libc ,例如MUSL libc; libc 通常提供dynamic linker,如libc-devel

了解如何使用rpm(在Centos或Ubuntu& Debian上的/lib/ld-linux.so*)查询packages之间的依赖关系。

对于开发,您可能需要其他一些软件包。 Debian有build-essential个虚拟包。可能CentOS有一个等价物。并且您肯定希望使用一些库(并且您希望使用开发包,例如在Debian libcurl4-gnutls-dev上使用libcurl HTTP客户端库进行开发)。另请参阅this answer(对于Ubuntu和Debian,但您可以根据CentOS进行调整)。