二進制庫在文件編譯哪個階段
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(1)二進制庫在文件編譯哪個階段擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
⑵ c語言的編譯過程是什麼
c語言的編譯過程如下:
1、預處理:預處理過程實際上是處理「#」的過程:#include包含的頭文件直接拷貝到hello.c中;#define定義的宏定義進行替換,同時刪除代碼中沒有的注釋部分。2、編譯:編譯的過程實質上是將高級語言翻譯成機器語言的過程。3、匯編:匯編器是將匯編代碼轉變成機器可以執行的命令,每一個匯編語句幾乎都對應一條機器指令。匯編相對於編譯過程比較簡單,根據匯編指令和機器指令的對照表一一翻譯即可。4、鏈接:就像hello.c中使用到了C標准庫的東西「printf」,但是編譯過程只是將源文件翻譯成二進制文件而已,這個二進制文件還不能直接執行,還需要一個動作:將翻譯成的二進制文件與需要用到的庫綁定在一塊。
補充:編譯過程可分為6步:掃描(詞法分析)、語法分析、語義分析、源代碼優化、代碼生成、目標代碼優化。
⑶ c語言是如何編譯成二進制
計算機專業有門課程叫做《編譯原理》,詳細講述了怎麼把高級語言翻譯成匯編語言活著機器能看懂的二進制代碼。
簡單的說,C語言是通過編譯器翻譯成二進制代碼的(就像英譯漢的軟體把英文翻譯成漢語一樣。把高級語言翻譯成機器語言過程很復雜,學了編譯原理就懂了)。還有編譯器可以用各種語言編寫,C語言可以被用C語言寫的編譯器來編譯。
⑷ C/C++語言編譯生產可執行的二進制文件的過程求大神詳盡解釋,
預編譯。編譯器將你的.c、.cpp源代碼,通過解釋其中的預編譯指令,將源代碼轉換成相應的沒有任何預編譯指令的代碼。
編譯、優化。將上一步的代碼編譯成匯編指令,並作一定優化,形成對應的.s匯編代碼
匯編。將.s文件匯編成機器碼,形成對應的.o目標文件,此時是不可執行的二進制文件。生成對應的清單文件。為了連接需要,還會生成未定向符號表、導出符號表、地址重定向表等等。
連接。先根據對應的清單文件、連接文件及之間的調用關系,決定所有的目標文件及引用的庫文件在最後可執行文件中的位置;然後做一些其他事情,比如根據符號表等將目標文件中的符號地址補全等等;最終得到可執行文件。
這只是我個人的簡單理解,更詳盡的解答都可以寫成好幾本書了=_=望採納~
⑸ C++中什麼是編譯時,什麼是運行時,二者有何區別
編譯階段主要進行語法的檢查,無誤。將程序代碼轉換成目標代碼(二進製表示,打開看不懂),沒有和操作系統進行連接,不能運行。完成連接後,程序能夠進入系統運行。
運行時,一定是編譯過的,沒有語法錯誤。編譯時,沒有生成目標文件,可能有語法錯誤。