编译(Compile)、连接(Link)都做了什么事情
来源:互联网 发布:ios开发必须用mac吗 编辑:程序博客网 时间:2024/05/25 01:36
一个C程序的生成要经历以下步骤:
1.编写代码,生成.c或.cpp文件,这时候它还是文本的;
2.编译,就是Compile,由C编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了;
3.连接,在汇编里称Link,在C里叫生成,即Build,它的作用是生成可执行的exe文件。由于一个程序的源码可由多个文件组成。这些文件在第二步 中分别编译,生成各自的目标文件,这一步的作用便是将这些obj文件,以及程序中需要的其它库文件(dll除外),统一到一个文件中来,形成单个的exe 文件。此exe文件便可以在操作系统下直接运行了。
上述第二步做完中间代码生成的工作后还有个代码优化,这里就不详讲了。
Compile、Build分别对应编译和连接这两个过程。Execute的意思是执行,即生成了exe文件后运行它。如果你的程序有修改,点这一项它会 弹出窗口问你是否重新编译和连接,也就是它可以自动把前面的工作都做了。也就是说,Vc菜单里的Execute功能如下:
1.程序有修改时,或者没有做前面的编译连接工作时
Execute=Compile+Build+执行;
2.程序编译连接好后
Execute仅仅是执行,不再做前面两项工作。
当程序有修改时,选择Execute只重编译和连接有改动的内容,但这样做有时候会出错,这时可选择Build菜单下的Rebuild All,重新编译、连接所有文件。
总之,C程序的生成可图示如下:
编写源代码->编译->连接,也叫生成->运行
对应的各个阶段处理的文件的扩展名为:
.c或.cpp->.obj->.exe。
C程序是编译执行的,还有一种程序是解释执行的,如Java,它的源文件经过编译后形成扩展名为Class的中间代码,之后不做连接生成Exe文件,而是直接将这种.Class的中间代码拿到Java虚拟机平台上,由解释器解释执行。这种方式效率较低,但较灵活。
- 编译(Compile)、连接(Link)都做了什么事情
- UIApplicationMain(都做了什么)
- 最近太烦燥了.什么事情都做不好.
- angularjs生命周期的compile的 pre-link阶段都干了什么
- 编译和链接(compile and link)
- Java JVM:垃圾回收(GC 在什么时候,对什么东西,做了什么事情)
- Java JVM:垃圾回收(GC 在什么时候,对什么东西,做了什么事情)
- Java JVM 8:垃圾回收(GC 在什么时候,对什么东西,做了什么事情)
- (JAVA自学笔记)创建一个对象都在内存中做了什么事情
- Person p=new Person(“zhangsan”,20);该句话都做了什么事情?
- CocoaPods 都做了什么?
- SetContentView都做了什么
- MsgWaitForMultipleObjects 都做了什么
- delete都做了什么
- 感觉该做点什么事情了
- java compiler 到底做了什么事情
- 当我们点击了编译时,编译器都为我们做了什么
- 编译过程做了哪些事情
- 2.7寸1325黄字OLED显示模组
- 设计模式之单列模式
- 论Android Binder驱动在Framework中的重要性
- 从GDI到GDI+使用的坐标系看微软二维绘图思路的进步
- linux C程序存储空间布局
- 编译(Compile)、连接(Link)都做了什么事情
- H.264/AVC MOTION ESTIMATION IMPLMENTATION ON COMPUTE UNIFIED DEVICE ARCHITECTURE (CUDA)
- 诺基亚安卓手机未死
- 过问题,这说明MySQL和NoSQL可以很好的结合。
- Jsp的隐式对象和EL的隐式对象学习
- Java 语言中的函数编程
- GNU make 的主要预定义变量
- 作业_2
- w3school