我在系統中的三個不同路徑中具有相同的共享庫。假設路徑是PATH1,PATH2 & PATH3。鏈接器或加載器如何處理共享庫的斷開軟鏈接?
共享庫的名字是libmylib.so
現在,PATH1如果我更換一個破碎的軟鏈接的libmylib.so,它爲圖書館進入和搜查的PATH2。
但是,PATH1如果我用其名稱爲libmylib.so一些其他的文本文件(或一些無關的文件)替換libmylib.so,然後應用程序執行失敗,指出「沒有一個ELF頭」
我有些困惑的行爲?爲什麼它會搜索其他路徑以避免軟連接斷開,並在文件不正確的情況下失敗。我期待它也搜索其他路徑的不正確的文件。
打開一個懸空的符號鏈接返回ENOENT,同樣的錯誤作爲一個不存在的文件,因此對連接器的懸空符號鏈接看起來是一樣的不存在的文件,它將繼續看。一旦找到文件,它會停止搜索。 – bdk 2011-03-15 14:46:03