在Linux系统上,通常,只需使用gcc就可以完成整个编译过程。但不要被gcc的名字误导,事实上,gcc并不是一个编译器,而是一个驱动程序(driver program)。在整个编译过程中,gcc就像一个导演一样,编译过程中的每一个环节由具体的组件负责,如编译过程由cc1负责、汇编过程由as负责、链接过程由ld负责。

编译程序对预处理过的结果进行词法分析、语法分析、语义分析,然后生成中间代码,并对中间代码进行优化,目标是使最终生成的可执行代码执行时间更短、占用的空间更小,最后生成相应的汇编代码。

编译过程分为4个阶段,分别是:编译预处理、编译、汇编以及链接。每个阶段都涉及了若干工具,GNU将这些工具分别包含在3个软件包中:Binutils、GCC、Glibc。

事实上,在这个安装命令的背后,GRUB的安装过程分为两个阶段:第一阶段是创建core.img,GRUB为此提供的工具是grub-mkimage;第二阶段是安装boot.img及core.img到硬盘,GRUB提供的工具是grub-setup。为了方便,GRUB将这两个过程封装到脚本grub-install中。