1. 程式人生 > >GCC 顯示程式詳細編譯-連結過程

GCC 顯示程式詳細編譯-連結過程

   很多時候,我們對於程式的編譯和連結過程很少關注。特別是使用強大的IDE之後,更多人只是會使用IDE進行程式設計。這樣,一旦出現編譯或者連結問題,有時候會很難找到編譯或者連結問題。理解編譯和連結的過程,對於編寫程式以及除錯問題都有很大的幫助。

   事實上,gcc提供了一個可選引數 --verbose,該引數可以完整的顯示編譯和連結過程。這裡以hello.c提供例子。

   

   如上圖顯示,該過程包括標頭檔案的搜尋路徑,由於該原始檔沒有雙引號使用的標頭檔案,搜尋路徑為空。<>包含的標頭檔案搜尋路徑一一列出。

   同時,編譯過程的最後,有一個報錯。提示我們 標頭檔案#incldue寫錯了。由於編譯過程出錯,因此,這裡並沒有執行連結過程。修改程式碼後重新編譯:

   

    如上圖,完整的顯示了連結過程。包括彙編器as,已經連結程式collect2的執行。可以看到,雖然程式碼只是簡單的列印hello,但是依賴需要連結的系統庫仍然有不少。