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

建置共用函式庫時,只公開要從外部使用的函式,並將內部函式的符號可見性(visibility)設為「hidden」,其優點下列何者正確?

  1. A內部函式被加密,無法分析
  2. B動態連結器要處理的符號減少,載入變快,內部的呼叫也不必經過PLT
  3. C函式庫在任何作業系統上都能運作
查看答案與解析

正確答案:B. 動態連結器要處理的符號減少,載入變快,內部的呼叫也不必經過PLT

共用函式庫中公開的符號,可能被其他模組中的同名定義所取代,因此即使是內部的呼叫也必須經過PLT或GOT。設為hidden後便無法從外部看見,動態連結器要檢查的符號數量減少,內部的呼叫也能以PC相對的方式直接進行。還能避免與其他函式庫的名稱衝突,並讓公開的ABI維持精簡。

  • A. 不會被加密。
  • B. 正確。也能避免名稱衝突。
  • C. 並不是用來消弭作業系統間差異的。
練習這個領域 前往領域頁面

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

  1. 關於C++中全域物件的建構函式在main之前執行的機制,下列何者正確?
  2. 關於編譯器從單一原始檔輸出的目的檔(.o),下列何者正確?
  3. 關於連結器的主要功能,下列何者正確?
  4. 關於連結器所進行的符號解析,下列說明何者正確?
  5. 關於連結器所進行的重定位(relocation),下列說明何者正確?

這個領域的比較