連結器與載入器與執行檔格式

關於動態連結(共用函式庫)的優點,下列何者正確?

  1. A即使執行環境中沒有函式庫,也一定能運作
  2. B多個程式可在記憶體上共用一個函式庫,更新函式庫後不必重新建置即可反映修正
  3. C啟動時的處理完全不需要,一定比靜態連結啟動得更快
查看答案與解析

正確答案:B. 多個程式可在記憶體上共用一個函式庫,更新函式庫後不必重新建置即可反映修正

在動態連結中,執行檔只記錄「要使用哪個共用函式庫的哪個函式」,執行時由動態連結器載入函式庫並加以結合。共用函式庫的程式碼不會被改寫,因此實體記憶體上的同一份副本可由許多行程共用。錯誤與漏洞的修正,也只要替換函式庫即可。不過啟動時需要花費結合的功夫。

  • A. 找不到函式庫就無法啟動。
  • B. 正確。也能節省記憶體與磁碟。
  • C. 啟動時需要進行結合的處理。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 將使用動態連結的程式複製到另一部電腦上執行,卻無法啟動。最可能的原因為下列何者?
  2. 與靜態函式庫(.a檔)一起連結時,連結器會嵌入執行檔的是下列何者?
  3. 使用GNU連結器時,若像「gcc -lmylib main.o」這樣,將靜態函式庫寫在使用它的目的檔之前,有時會出現未定義參照的錯誤。下列關於其原因的敘述何者正確?
  4. 關於位置獨立程式碼(PIC),下列說明何者正確?
  5. 關於共用函式庫所使用的GOT(全域偏移表,Global Offset Table)的功用,下列何者正確?

這個領域的比較