闲扯两句,浅谈C++编译流程

世事总是很奇秒,难道不是吗?世间,每个人都在不断改变着,也许过程坎坷不平,也许路途千回百折。不过最终好在,我们都还坚持着。

又是一年最好时光,也许应该放下思绪,整理行囊,来一次遇见自己的旅行,就像那首歌所唱的一样,“几次真的想让自己醉,让自己远离那许多恩怨是非,让隐藏已久的渴望随风飞,忘了我是谁”,但同样曲中那句“男人若没人爱,多可悲”也点明了旅途中一个人是孤独的。

不扯了,还是想一想今次染个什么颜色的头发吧:)

今天来谈一谈C++的一般编译流程(前面日志中不确定是否已提到斯最近因工作需要在研究C++)。

通常,这里只说通常,将C++源代码编译成可执行程序,需要经历4个步骤;同样是通常,编译软件我们会选择g++。

第1个步骤:预处理器(preprocessor)将头文件(.h)内容复制到源文件(.cpp)中,生成宏代码,替换通过#define定义的常量,最终生成新源文件

第2个步骤:通过编译器(compiler)将第1个步骤所生成的新源文件,编译成指定平台的汇编语言(默认文件名后缀.s)

第3个步骤:汇编器(assembler)将第2个步骤生成的汇编代码再编译成指定平台的目标代码(即机器代码,默认文件名后缀.o)

第4个步骤:链接器(linker)将第3个步骤生成的那些目标代码文件进行链接,以最终生成可执行文件(机器代码)

说的太简单,不够活泼生动形象,举个栗子。 Continue reading “闲扯两句,浅谈C++编译流程”