1. 程式人生 > >compile,build和execute的區別

compile,build和execute的區別

 如果你學了彙編和編譯就應該清楚了~~  
  一個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虛擬機器平臺上,由直譯器解釋執行。這種方式效率較低,但較靈活。