c++编译后产生的一些文件是什么?
书上说“编译是以原程序文件为单位分别编译的,每一个程序单位组成一个源程序文件,如果有多个程序单位,系统就分别把它们编译成多个目标程序”(《C++程序设计》第二版 谭浩强P14)
问:什么叫做程序单位,是不是一个cpp文件就是一个程序单位?那么几个cpp文件分别编译出各自的obj文件,再build出各自的exe文件,它们又有什么联系呢? 展开
c++程序在编译后,在目标路径下会生成多个文件:
Debug文件夹(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg。
1、exe:是生成的可执行文件。
2、ilk:当选定渐增型编译连接时,连接器自动生成ILK文件,记录连接信息。
3、obj:是目标文件,源程序编译后的产物。
4、pch:全称是PreCompiled Header,就是预先编译好的头文件。
5、idb:文件保存的信息,使编译器在重新编译的时候只重编译最新改动过的函数和只对最新类定义改动过的源文件进行重编译,以提高编译速度。
6、pdb:全称是Program DataBase,即程序数据库文件,用来记录调试信息。
扩展资料:
工作原理:
C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。
生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。该过程实际上分成两个步骤。
第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);如果这个步骤成功,下一步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。
参考资料来源:百度百科-C++
Debug文件夹(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg
*.exe:是生成的可执行文件
*.ilk:当选定渐增型编译连接时,连接器自动生成ILK文件,记录连接信息
*.obj:是目标文件,源程序编译后的产物
*.pch:全称是PreCompiled Header,就是预先编译好的头文件
*.idb:文件保存的信息,使编译器在重新编译的时候只重编译最新改动过的函数和只对最新类定义改动过的源文件进行重编译,以提高编译速度
*.pdb:全称是Program DataBase,即程序数据库文件,用来记录调试信息
*.dsp:(全称是Developer Studio Project)也是一个配置文件
*.ncb:(全称No Compile Browser)的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成
*.plg:实际上是一个超文本文件,可以用Internet Explorer打开,记录了Build的过程
*.cpp:就是C++源代码文件.
对于编译过程,总体上是这样,源代码(*.h,*.cpp/c)经过预编译,编译,生成目标文件(Windows下应该是.obj文件,Linux/unix下是.o文件),然后通过链接(将各种目标文件.obj(.o) 和 目标文件的集合(动态静态库dll(windows下),so(linux/unix下))),最终成功可执行文件(Windows下叫exe,Linux/unix下随便以什么结尾了)。
*.obj,*.pch,*.dsp,*.ncb,*.plg 这些,除了obj,其他都是微软集成的编译器做的事情了,微软其实也有个类似makefile的东西,其实你可以不用去关注的。这些C++本身无关。
ncb=整个工程的构架文件 你在vc里面写一个语句 写到一半时按ctrl+alt+T就会出来该语句的众多补完选择 靠的就是他。
opt=工程的选项 存储在这里面
dsp=工程结构文件 vc里workspace视图里面的众多cpp h文件靠他组织
dsw=工程初始引导文件 有点像快捷方式 告诉vc你的工程包含哪几个文件 比如opt dsp ncb