1. 程式人生 > >Linux 編譯的四個階段

Linux 編譯的四個階段

這個過程主要指的是:源程式到可執行的二進位制程式碼這整個過程

四個階段主要是:

1.預處理階段

2.編譯階段

3.彙編階段

4.連結階段

四個階段的詳細資訊如下:

1.預處理階段

主要執行展開原始檔裡的巨集,插入include包含的檔案.

2.編譯階段.

檢查程式碼的規範性、是否具有語法錯誤等,並把預處理的檔案編譯成可讀彙編程式碼即.s檔案.另外說句如果這裡面有相同的操作都是可以編譯通過的,只不過在執行二進位制檔案時候會跑不同分支,或報錯.畢竟這個不是語法錯誤.簡單一句話說就是這個階段是你編寫的所有程式碼都要執行編譯的,而真正執行時候會根據條件那些能執行那些不執行.可能我的邏輯不是很清楚但是需要慢慢體會.

3.彙編階段

把彙編階段生成的.s檔案彙編成具體cpu上的目的碼即.o檔案.

4.連線階段

把彙編階段生產的.o檔案與相關的目的碼進行連結,生產可執行的二進位制檔案.

階段 程式 gcc選項 輸入檔案 輸出檔案
預處理 cpp,c -E .c或者其他(hello.c) .i(hello.i)
編譯 ccl -S .i(hello.i) .s(hello.s)
彙編 as -c .s(hello.s) .o(hello.o)
連結 ld .o(hello.o)

相關推薦

Linux 編譯階段

這個過程主要指的是:源程式到可執行的二進位制程式碼這整個過程 四個階段主要是: 1.預處理階段 2.編譯階段 3.彙編階段 4.連結階段 四個階段的詳細資訊如下: 1.預處理階段 主要執行展開原始檔裡的巨集,插入include包含的檔案. 2.編譯階段.

2. 程式編譯階段

0.引言 hello.c(源程式)是一條高階C語言程式,雖然它是以一種易讀的形式,讓人們容易理解。但是,它卻無法直接驅動硬體CPU直接執行。為了我們編寫的hello.c程式可以被執行,驅動硬體電路工作,hello.c程式必須經過一些列處理步驟,將源程式轉化為可

gcc編譯程式的階段(預處理-編譯-彙編-連結)

gcc的編譯流程分為四個步驟,分別為: ・ 預處理(Pre-Processing) ・ 編譯(Compiling) ・ 彙編(Assembling) ・ 連結(Linking) 下面就具體來檢視一下gcc是如何完成四個步驟的。 hello.c原始碼 #include

Linux 運維工程師學習成長路線上要經歷哪階段

之前曾看到一篇新聞,Linux之父建議大家找一份基於Linux和開源環境的工作。今天就來聊一聊我

C代碼通過編譯器編譯成可執行文件, 需經歷 預處理、編譯、匯編、鏈接 階段

語法 span -s 執行 命令 編譯器 匯編 -c 動態庫 內容借鑒 於yqzheng 一、預處理 1.任務: 進行宏定義展開、頭文件展開、條件編譯, 不檢查語法 2.命令: gcc -E [源文件] -o [預處理文件]      gcc -E hello.c

Servlet生命周期的階段

列表 let 計數器 用戶 service 容器 回收 連接 結束 Servlet 生命周期可被定義為從創建直到毀滅的整個過程。以下是 Servlet 遵循的過程: Servlet 通過調用 init () 方法進行初始化。 init 方法被設計成只調用一次。它在第一次

Oracle startup的階段

轉移 acl pen rtu tro tar 數據庫 init 重建控制文件 shutdown->nomount->mount->open; 1、shutdown:數據庫關閉 2、nomount: 1)$ORACLE_HOME/dbs下找初始化參數文件

靈性領悟的階段-肯·威爾伯

而且 並不是 嘗試 在那 發展方向 都是 文字 發的 過去 靈性領悟的四個階段-肯·威爾伯 靈性上的修行主要分成四個階段:信仰、信心、直接的體悟和永不退轉的成就——你可以信仰神,你可以對神性有信心,你可以直接體悟到神,你也可以變成神。 一、信仰是靈修最初的

突破這個階段年薪沒有50W,還好意思說是搞Java的?

我一直在強調,“程式猿DD”不僅僅有Java最前沿技術文章分享,還有很強學習的氛圍,粉絲也很活躍,最重要的,還有優質資源,今天給大家分享一波免費乾貨視訊資源,很全面,我將它起名為:“架構師成長之路” 該視訊教程總共分為四個階段來學習,逐步進階,而且還會不定期更新,我簡單介紹一下每個

突破這個階段月薪沒有50k,乾脆還是不要搞Java了?

很多同學在學Java前,常常問,學Java前景好麼?能不能找到工作啊?學Java的人那麼多,Java的就業形勢怎樣啊?本文浙江優就業的小U老師為大家集中掃盲一下。 據業內權威機構預測,2018年我國將新增上萬家IT企業,這些企業將強勢拉動IT人才的需求。而且現在80%網際網路公司基本都在使用Java,維

熊嘯鋒SEO系列:搜尋引擎演算法演變的階段揭祕

上一篇我分享了站群的玩法 SEO直到現在為止仍然是網路營銷領域非常重要的營銷手段之一,不管你的企業是做什麼的,或者你是個人創業,只要你學會了SEO之後,你就可以不花一塊錢,把你的關鍵詞排在搜尋引擎前面,獲得海量的精準目標客戶。 今天繼續分享搜尋引擎演算法的演變過

Linux編譯不同目錄下的檔案以及靜態庫、動態庫的使用

轉自:http://blog.csdn.net/luotuo44/article/details/16970841 一、  編譯不同目錄下的多個檔案 各個檔案的佈局如下:         head.h檔案的程式碼:

Linux最佳的現代開原始碼編輯器

在尋找 Linux 上最好的程式碼編輯器?如果你問那些老派的 Linux 使用者,他們的答案肯定是 Vi,Vim,Emacs,Nano 等等。但我不討論它們。我要討論的是嶄新、先進、優美、強大、功能豐富,能夠提高你程式設計體驗的最好的 Linux 開原始碼編輯器。 Linux 上最佳的現代開原始碼編

產品經理的階段(分享會筆記)

提筆畫流程,上馬定需求,進可穩迭代,退可跪開發。 我把產品經理分成四個階段: 1)產品執行&使用者體驗 2)產品架構&技術實現 3)產品決策&產品模型 4)產品格局&社會價值 第一階段:產品執行&使

RUP的階段

使用RUP過程開發軟體系統,軟體的生命週期分為以下幾個階段:起始階段;細化階段;構建階段;交付階段。每個階段結束於一個主要的里程碑(Major Milestones),在每個階段的結尾執行一次評估,以確定這個階段的目標是否已經滿足。如果評估結果令人滿意的話,可以允許專案進入下

04-學習併發的階段並推薦學習併發的資料

併發的學習目標,其實目標是非常明確的,併發為什麼會遇到這麼多挑戰呢?無非就是它有這麼多的缺點 我們無非就是克服這些缺點之後,寫出能支撐大併發的應用就可以了。這就是我們的學習目標,當然了,對於問題的解決,需要有一定的解決問題的能力。   推薦的學習資料: 併發程式設計網

Java開發學習的階段

在程式設計的世界裡,Java一直是企業級別開發最喜歡選擇的程式語言,從Java就業形勢來看,一直都是相當不錯的,而且由於手機安卓開發的需要,更多的年輕人開始轉戰Java的學習。同時,許多人也對java程式設計開發要學習哪些內容產生了疑惑,下面總結一下學習Java程式設計開發具

DHCP實驗過程階段

DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個區域網的網路協議,使用UDP協議工作, 主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手

分析MHA的manager.log檢視failover的階段

MHA  failover5個階段: * Phase 1: Configuration Check Phase.. 檢查配置檔案,選候選slave為新的master * Phase 2: Dead Master Shutdown Phase.. 強制關閉,並執行master ip漂

軟體測試的階段,單元測試、整合測試、系統測試、驗收測試

軟體測試的物件包括軟體需求、概要設計、詳細設計、軟體執行環境、可執行程式和軟體原始碼等。軟體測試包括質量、人員、資源、技術和流程五大要素,以及測試覆蓋率和測試效率兩個目標。 軟體測試一般分為4個階段:單元測試、整合測試、系統測試、驗收測試。 一、單元測試  單元測試是