連結器與載入器與執行檔格式
關於C語言程式中作業系統最初開始執行的位址(進入點,entry point),下列何者正確?
- A一定是main函式的開頭
- B固定是執行檔的第一個位元組
- C通常不是main,而是_start等啟動用的程式碼,完成初始化後才呼叫main
查看答案與解析
正確答案:C. 通常不是main,而是_start等啟動用的程式碼,完成初始化後才呼叫main
連結器會將C執行期(runtime)所提供的啟動用目的檔(crt1.o等)嵌入程式,並以其中的_start作為入口。_start會從堆疊取出命令列引數,進行標準函式庫與全域物件的初始化後,才呼叫main。main返回後,則使用其回傳值呼叫exit,進行結束處理。
- A. 在main之前會先執行準備的處理。
- B. 入口位址是記錄在ELF標頭中。
- C. 正確。是C執行期所提供的啟動程式碼。