编译过程
前言
这部分内容来自《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?