编译compile和链接Link

编译html

Compilewindows

与连接函数

Link ui

要链接要先编译,若是没编译会链接时会自动编译。举个例子,若是你有两个文件,对url

一个文件进行编译只是讲这个文件编译成了目标文件spa

.obj翻译

,可是另一个文件没有,需对另htm

外一个文件进行编译,能够观察结果输出框的显示,这时链接便会将两个文件链接在一块儿,blog

才会将互相调用的函数等联系起来,生成内存

.exe

。若是不编译直接点链接,系统自动将两个文

件编译,并链接,生成

.exe

文件。

 

假设两个文件分别是a.cpp,b.cpp,a调用b的函数:

编译

a

--------------------Configuration: a - Win32 Debug-------------------- 

Compiling... 

a.cpp 

a.obj - 0 error(s), 0 warning(s) 

而后编译

b

--------------------Configuration: a - Win32 Debug-------------------- 

Compiling... 

b.cpp 

b.obj - 0 error(s), 0 warning(s) 

而后链接:

--------------------Configuration: a - Win32 Debug-------------------- 

Linking... 

a.exe - 0 error(s), 0 warning(s) 

假如编译一个后直接链接:

编译

a

:无变化

--------------------Configuration: a - Win32 Debug-------------------- 

Compiling... 

a.cpp 

a.obj - 0 error(s), 0 warning(s) 

直接链接:

 

--------------------Configuration: a - Win32 Debug-------------------- 

Compiling... 

b.cpp 

Linking... 

a.exe - 0 error(s), 0 warning(s) 

若是两个都不编译,直接点链接:

 

--------------------Configuration: a - Win32 Debug-------------------- 

Compiling... 

a.cpp 

b.cpp 

Linking... 

a.exe - 0 error(s), 0 warning(s) 

注意:

假如文件没有被修改的话,编译一次后不会再进行编译了,

能够直接链接,

若是

这时不编译,直接点链接,也只是链接,没有编译过程。

 

编译

.h

文件会提示不能编译,

由于

.h

通常存放的是函数的声明,

类的定义等,

系统不会

编译,可是能够在头文件中点链接进行整个程序的编译链接过程。

链接后就能够运行了,也能够在没编译、链接时点运行,系统会自动编译、链接。   
在多道程序环境中,要想将一个用户源程序变为一个能够在内存中执行的程序,一般要通过三步依为 编译,连接,装入  
首先是编译,由编译程序将用户源代码编译成若干个目标模块; 其次是连接,由连接程序将编译后造成的一组目标模块以及他们所需的库函数连接在一块儿,造成一个完整的装入模块, 
由装入程序将装入模块装入内存  
编译与连接都是为将用户程序从硬盘上调入内存并将其转换为可执行程序服务的。  用编译器时的compile 就是在进行编译,link就是连接,运行程序时能够看到的。  我对编译的理解是高级语言翻译为电脑能够理解的二进制代码也就是机器语言。  连接下面举例讲。你最好边看边画个内存的图好理解。  
如,咱们编写了一个程序,编译后,在做业地址空间中所获得目标模块的起始地址一般是0,假设在1000处写了一句load 1,2500 (功能是将2500单元处的数据取至寄存器1)。在多道程序环境下将程序装入内存时并不可能预先知道所编译的模块应该放在内存的何处,假设程序被装入从10000开始的地址,此时2500变成了12500,这里就出现了问题,须要修改指令中的相对地址,此时就须要连接来解决。这只是连接的一个功能。  
连接分为三种,静态连接,装入时动态连接,运行时动态连接。如今流行的是运行时动态连接,这种方法不只可加快程序的装入过程,并且节省了大量的内存空间

程序入口main函数,  .c文件,  预处理阶段,(编译后)目标文件,(链接后)可执行文件,

程序源文件(.c,.cpp,.m),目标文件(.obj, .o),可执行文件(.exe).

目标文件是二进制文件。

根据语言不一样,可编译源文件后缀可能不一样,根据平台不一样,目标文件后缀不一样,windows下是.obj。

参考:http://www.cnblogs.com/laojie4321/archive/2012/03/30/2425015.html

摘自:http://wenku.baidu.com/link?url=a4mVqQ4Iku8VsfVu-VUPoX9ksPEPB_dWUcAB82QxDCNzmlAPh14J6WSKK9wW9rlfKpmbseRvg4fpA2e2uiRQwo5pYehx7ZBk2nvKlqDxNre