Linux下的GCC和Windows下Visual Studio的编译所生成的文件作用

来源:互联网 发布:淘宝评论图片福利链接 编辑:程序博客网 时间:2024/06/11 05:25

首先先说一下Linux吧因为这也是博主最早接触的编程开发环境所以比较熟悉的!

Linux下就说GCC GCC编译如果不指定编译选项的话是一步到位没有额外的后缀名文件!

.i文件:.i文件是GCC -E预处理之后所生成的文件,里面包含着已经完成宏替换,条件编译以及头文件包含等宏指令!

.s文件:.s文件是GCC -S把预处理文件(.i)翻译成汇编代码的文件,包括头文件包含函数语法调用全部都会翻译成汇编指令!

.o文件:.o文件是GCC -C把汇编文件(.s)翻译成目标代码的文件,这一步会把所有的汇编代码统统翻译成CPU可认识的二进制数据!

-x属性:-x属性是GCC链接.o文件生成的可执行文件,一般在Linux下的文件管理系统是不根据扩展名做后缀的一般是根据文件权限来判断文件属性的,在Linux下可以使用ls -l 文件名 命令查看一个文件的权限 如果带有-x权限那么这个文件就属于可执行文件!

.a文件:静态库文件是多个.o文件的集合!可以使用“ar -r 静态库文件名.a 汇编文件.o” 生成!

.so文件:动态库文件是多个.o文件的集合!可以使用“GCC -shared -fPCI -o 动态库文件名.so 汇编文件.o” 生成!

.pch文件:头文件预编译文件,这里包含了已经编译好的目标文件,使用头文件预先编译可以大大提高编译速率,详细可以去看我的“深度剖析“GCC编译器编译过程“这一篇文章

下面说一说Windows系统上的Visual Studio编译所生成的文件因为Visual Studio是博主在Windows开发下所擅长的IDE

.i文件:.i文件是Visual Studio预处理之后所生成的文件,里面包含着已经完成宏替换,条件编译以及头文件包含等宏指令!

.s文件:.s文件是Visual Studio把预处理文件(.i)翻译成汇编代码的文件,包括头文件包含函数语法调用全部都会翻译成汇编指令!

.obj文件:.obj文件是Visual Studio把汇编文件(.s)翻译成目标代码的文件,这一步会把所有的汇编代码统统翻译成CPU可认识的二进制数据!

.exe文件:.exe文件是Visual Studio链接之后生成的可执行文件!

.lib文件:.lib文件是Windows下的静态库文件!同样也是多个.o文件的集合!

.dll文件:.dll文件是Windows下的动态库文件!也是多个.o文件的集合!

.pch文件:头文件预编译文件,这里包含了已经编译好的目标文件,一般情况下Visual Studio会自动进行头文件预编译因为这样可以提高编译速率,且当你修改了头文件内容或者.cpp文件时Visual Studio会重新预编译头文件!

.pdb文件:Visual Studio调试时所生成的文件,pdb文件主要保存了Visual Studio调试时所需要的基本信息,例如变量名,源文件名,函数名,栈指针(帧指针)一般只会在调试模式下才会生成pdb文件!pdb文件必须和调试程序文件名一致!因为调试模式下Visual Studio在调试程序时加载pdb文件是根据调试程序文件名来加载的!

.ilk文件:当你的Visual Studio第一次使用增量链接时所生成的文件里面包含了链接信息!增量链接是根据上次一次的链接信息而编译修改后的链接部分这样可以达到提高编译速率的效果而不是重新把整个项目都编译一遍,这个时候就需要上一次的链接信息而ilk文件里保存上一次的链接信息编译器可以从ilk文件里读取!

.html文件:Visual Studio生成的编译日记,里面包含了编译信息!

.sln文件:解决方案文件,sln包含着这个项目组里所有工程文件的详细信息!

.suo文件:包含着该解决方案配置信息,每个解决方案里项目在Visual Studio中的配置不一样所以每次Visual Studio运行解决方案都会读取.suo文件里的用户配置信息!

.project文件:解决方案文件,包含着项目里所需文件!也就是说一般情况下打开这个文件Visual Studio会从这个文件中获取到这个解决方案项目组里有那些文件!然后一并加载到工程当中去!