程序编译

在linux中,gnu项目提供了gcc编译器、g++编译器和gdb调试器。

C和C++语言正在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++语言编写的源代码。

编译过程:预处理、编译、汇编、链接

预处理:将所有的#include头文件、#define标识符替换成文本的真正内容,生成.i预处理文件(预处理之后得到的仍然是文本文件,但文件体积会大很多)。

编译:(预处理过的)程序->汇编代码,生成.s汇编文件。(符号检查)

汇编:汇编代码->机器码,生成.o目标文件。

链接过程:所需的目标文件以及所需的库文件链接在一起,生成最终的可执行文件。(符号引用检查)

GCC编译命令
逐一编译
gcc -E hello.c -o hello.i(预处理)
gcc -S hello.i -o hello.s(编译)
gcc -c hello.s -o hello.o(汇编)
gcc hello.o -o hello(链接)

一步编译
gcc hello.c -o hello(不会产生中间文件)

-o指定输出文件的名称。