目標文件,一般是程序編譯後的二進制文件,再通過鏈接器和資源文件鏈接就成hex文件了。
OBJ只給出了程序的相對地址,而hex是絕對地址。
B. 編程編譯時生成的obj文件和exe文件本質上有什麼區別
本質上都是2進制代碼,
但是
obj
沒有經過鏈接的重定位,不是可執行的代碼。
而且一個obj對應一個cpp編譯單元,裡面的外部符號都沒解析出來。
比如a.cpp
通過b.h使用了一個
b.cpp里定義的函數
func();
那麼a.cpp生成的obj裡面只會有func()
這個函數名的調用而已,也就是一個(對a.obj來說的)外部符號。
只有經過鏈接成為了.exe,
相應於a.obj裡面的func()的調用才會更新成實際的b.obj裡面的func()的實際地址。
對全局變數也是同樣的道理。
C. 對於obj和exe文件,既然都是二進制文件,計算機可以識別,為什麼要進行
obj是源碼編譯文件,而exe是編譯後的解釋生成的文件。
雖然都是二進制文件,但是計算機底層的一些原理導致無法執行obj,
所以需要轉化為exe
D. 源文件被編譯成OBJ文件,這個OBJ文件是二進制文件么
是的,它們被稱為目標文件,僅僅是你所編寫的代碼對應的二進制代碼等,由你所編寫的代碼完全決定,並不包含其被調用程序的代碼。
E. 將目標程序(.OBJ)轉換成可執行文件(.EXE)的程序稱為()。
連接程序。
obj文件是程序編譯時生成的中間代碼文件,目標文件一般是程序編譯後的二進制文件,再通過鏈接器和資源文件鏈接就成exe文件,OBJ只給出了程序的相對地址,而EXE是絕對地址。
將目標程序轉換為可執行文件的程序稱為鏈接程序,編譯器和匯編程序都經常依賴於鏈接程序,將分別在不同的目標文件中編譯或匯編的代碼收集到一個可直接執行的文件中。
(5)編譯後obj是二進制嗎擴展閱讀:
注意事項:
目標程序是編譯程序將源程序編譯後的結果,如果是C++,那麼後綴是.o。
編譯程序一般是編譯器公司(比如微軟Intel他們都生產編譯器)做的,將源代碼轉化為機器可識別的文件,經過鏈接,生成可執行程序。
解釋程序即解釋器,不需要經過編譯階段即可根據用戶源程序執行,程序語言分編譯類和解釋類語言。
F. obj文件是怎麼產生的
程序編譯後的二進制文件,目標文件,編譯時就產生了。
G. C語言源程序文件名的後綴是.OBJ,經過編譯後,生成文件的後綴是什麼經過連接後,生成文件的後綴是什麼
C語言源程序文件名的後綴是.c。C源程序經過C編譯程序編譯之後生成一個後綴為.OBJ的二進制文件,
然後由稱為「連接程序」的軟體,把此.OBJ文件與C語言提供的各種庫函數連接起來生成一個後綴為.EXE的可執行文件。
由高級語言編寫的程序稱為「源程序」,把由二進制代碼表示的程序稱為「目標程序」。為了把源程序轉換成機器能接受的目標程序,這時我們需要具有翻譯功能的軟體--「編譯程序」。每種高級語言都有與它對應的編譯程序。
(7)編譯後obj是二進制嗎擴展閱讀
1、目標文件的擴展名為「.obj」(Windows)或「.o」(Linux)。目標文件已經是機器指令,但還不能運行,因為目標文件還沒有解決函數調用問題。
2、可執行文件的擴展名為「.exe「。
H. 後綴為.obj和.exe的二進制文件都可以直接運行嗎
不能。.exe文件可直接運行,.obj文件不能運行。
因為.exe屬於可執行文件,.obj文件只是源代碼生成可執行文件的過程中生成的過程文件。
在計算機DOS下,生成一個可執行文件,需要用編譯器將源程序編譯為obj文件,再用鏈接器將obj文件鏈接成exe文件。只有可執行文件才能直接運行。可執行文件還包括.sys文件 .com等類型文件。
拓展資料:
.obj文件與.exe文件的區別與聯系:
1、obj里存的是編譯後的代碼跟數據,並且有名稱,所以在連接時會出現未解決的外部符號。當
連成exe後便不存在名稱的概念了,只有地址。
lib就是一堆obj的組合。 編譯器會鏈接一些常用的庫,其它的需要你自己指定。
2、目標文件,一般是程序編譯後的二進制文件,通過鏈接器和資源文件鏈接就成可執行文件了。OBJ只給出了程序的相對地址,而可執行文件是絕對地址。CPP對應的二進制代碼格式obj,是未經重定位的。
3、obj 文件和exe 文件都是二進制數據文件,其中obj 文件是COFF 格式,exe 文件時PE 格式。
參考資料來源:網路-可執行文件
參考資料來源:網路-編譯
參考資料來源:網路-obj文件
I. C語言採用解釋方式將源程序轉換為二進制的目標代碼嗎
不是,C語言採用編譯方式將源程序轉換為二進制的目標代碼。使用C語言編譯器來完成。
所謂C語言編譯器,就是把編程得到的文件,比如.c,.h的文件,進行讀取,並對內容進行分析,按照C語言的規則,將其轉換成cpu可以執行的二進制文件。其本質在於對文件的讀入,分析,及處理。
C語言編寫的程序代碼稱為源程序,對於計算機本身來說,它並不能直接識別由高級語言編寫的程序。C語言程序經C語言編譯程序編譯後,生成後綴為.obj的二進制文件(稱為目標文件)。
此.obj文件必須與系統提供的各種庫函數連接起來生成一個後綴為.exe的可執行文件才可以執行。C語言的可執行文件由一系列機器指令構成的。
(9)編譯後obj是二進制嗎擴展閱讀
解釋執行和編譯執行是計算機語言的執行方式。解釋執行由解釋器現場解釋執行,不生成目標程序。如BASIC便是解釋執行,一般解釋執行效率較低,低於編譯執行。
編譯執行由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行目標程序。如:PASCAL,C,C++,delphi等語言。效率高於解釋執行。
J. c 語言編譯後產生的obj文件是做什麼的
簡單的說就是目標代碼.
obj文件是單獨的目標文件,它還不能單獨運行.需要把相關的obj文件連接到一起,才能產生可執行文件.