天天看點

《嵌入式C程式設計實戰》——1.5 軟體開發工具

本節書摘來異步社群《嵌入式c程式設計實戰》一書中的第1章,第1.5節,作者:【瑞典】lars bengtsson(本特松), lennart lindh(林德),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

現在有很多的軟體開發語言,如c、c++、ada、lisp等。軟體的開發都遵循标準化的過程。程式(源代碼)可以被編譯成目标對象可以執行的代碼,一些編譯器會将代碼轉換為彙程式設計式。而連結器将程式與用到的庫檔案和其他一些東西組織在一起,而且所有的基位址都是絕對位址。連結器最後産生的可以被下載下傳到目标系統并執行的機器代碼,如圖1.11所示。

《嵌入式C程式設計實戰》——1.5 軟體開發工具

編譯器是一種計算機軟體,它的作用是将源程式轉換為目标程式。通常,通過兩個步驟,就可以将一個c語言編寫的程式轉換為目标程式。第一步,将c程式轉換為彙程式設計式;第二步,将彙編轉換為目标程式。目标程式不能直接載入到系統中,它還需要和其他目标代碼檔案連結到一起。

目标程式可能會需要與裝置驅動程式和其他程式組織在一起,這一點需要由連結器來實作。編譯器不會将符号位址轉換為真實位址。是以,這裡即使隻有一個目标程式,也必須使用連結器來完成位址轉換。

連結器允許将不同的子產品組織成一個程式,而程式員使用連結器的曆史可以追溯到1947年。

連結器的定義

連結器是一個程式,可以将目标程式子產品組織在一起,形成一個可執行的程式。簡單地說,就是它将多個檔案組合到了一起。

目标程式是指一種包含了機器代碼和資訊的程式子產品。這些子產品最後需要連結器進行組裝。

大多數的程式設計語言(如c)都允許獨立地進行子產品的編寫。這樣做簡化了程式設計的工作,因為你可以将一個大型的程式分解為多個更小、更容易管理的部分。

最後,将這些子產品組合在一起,這是連結器的工作。圖1.12給出了程式連結的過程。

《嵌入式C程式設計實戰》——1.5 軟體開發工具

elf=可執行連結格式。

繼續閱讀