連結器與載入器與執行檔格式
建置共用函式庫時,只公開要從外部使用的函式,並將內部函式的符號可見性(visibility)設為「hidden」,其優點下列何者正確?
- A內部函式被加密,無法分析
- B動態連結器要處理的符號減少,載入變快,內部的呼叫也不必經過PLT
- C函式庫在任何作業系統上都能運作
查看答案與解析
正確答案:B. 動態連結器要處理的符號減少,載入變快,內部的呼叫也不必經過PLT
共用函式庫中公開的符號,可能被其他模組中的同名定義所取代,因此即使是內部的呼叫也必須經過PLT或GOT。設為hidden後便無法從外部看見,動態連結器要檢查的符號數量減少,內部的呼叫也能以PC相對的方式直接進行。還能避免與其他函式庫的名稱衝突,並讓公開的ABI維持精簡。
- A. 不會被加密。
- B. 正確。也能避免名稱衝突。
- C. 並不是用來消弭作業系統間差異的。