連結器與載入器與執行檔格式
關於編譯器從單一原始檔輸出的目的檔(.o),下列何者正確?
- A是可直接在作業系統上執行的完整程式
- B只是將原始碼壓縮而成,不含機器碼
- C含有機器碼,但其他檔案中的函式與變數的位址尚未決定
查看答案與解析
正確答案:C. 含有機器碼,但其他檔案中的函式與變數的位址尚未決定
目的檔中包含該檔案內函式經翻譯後的機器碼、變數的初始值、所定義與所參照的名稱清單(符號表),以及事後要填入位址的位置清單(重定位資訊)。像printf這樣呼叫其他檔案中函式的指令,由於不知道位址,仍保留暫時的值。連結器會將多個目的檔整合起來決定位址,進而產生執行檔。
- A. 要執行必須先經過連結。
- B. 內容是機器碼及其附屬資訊。
- C. 正確。位址是在連結時決定的。