编译过程

前言

这部分内容来自《c++ primer plus 6th》

流程

具体的步骤取决于计算机环境和使用的编译器: 1、编写源代码。使用文本编辑器编写程序,保存到文件中,即源代码文件。 2、编译源代码。会运行一个翻译程序,讲源代码的文本内容翻译成主机内部所使用的语言--机器语言,包含翻译后内容的文件就是目标代码(object code) 3、将目标代码和其他代码链接起来。链接指的是,将源代码的目标代码,和源代码所用到的函数库的目标代码,以及一些标准的启动代码(startup code)关联到一起,生成可运行的程序的操作。这个最终的程序文件被叫做可执行文件。

这里以gcc作为翻译程序,演示命令:

# c++0x表示支持C++11 特性
g++ -std=c++0x temp.cpp

关于源代码文件的后缀,需要一定的格式,如果是不支持的格式,unix编译器会显示“bad magic number” 这是支持的格式:

unix是大小写敏感的 标准C使用小写的c,C++程序使用大写的C dos则不区分大小写 所以是使用不同的拓展名

编译和链接

最开始实现C++的时候,先将c++转化成c代码(使用cfront,表示c前端-- c front end),再用标准c编译器翻译成目标代码 后来才出现直接翻译

所以还是很多样的

unix编译和链接

最开始unix 使用CC命令调用cfront,但是cfront更新太慢。。逐步被替换 所以后来CC虽然保留,但是启动的编译器可能是其他的,如GNU g++

CC temp.C temp1.C

这时候会产生目标文件,temp.o, temp1.o 接下来编译器会把目标文件,传递给系统的链接程序,让他执行操作,生成可执行文件,a.out 如果只有一个.o文件,那么会自动删除

如果修改了一个文件,可以如下编译:

CC temp.c temp1.o

有些时候需要命令额外指定库,如-lm

linux编译和链接

和unix很像 编译器最常见的是Free Software Foundation的GNU C++编译器

g++ temp.cxx -lg++

windows命令行编译器

最方便的方式是下载Cygwin /MinGW 如果编译成功,产生的可执行文件名是a.exe

Last updated

Was this helpful?