Linux
Linux 載入程序 (ld.so) 是否遵循符號連結?
我試圖將 ld.so.cache 文件移動到另一個位置時偶然發現了一個問題。我試圖在它以前的位置為它創建一個符號連結
/etc/
——但似乎載入器無法遵循這個符號連結。此外,硬連結不可行,因為新位置位於另一個分區上。我的最終目的是擁有一個只讀的根文件系統,這可能是阻止我這樣做的最後一件事。
先感謝您!
我可以確認,至少在 Glibc 中,
ld.so
打開時確實遵循符號連結/etc/ld.so.cache
。程式碼在elf/dl-cache.c
函式中,從_dl_load_cache_lookup
中引用函式。該函式打開文件並將其映射到記憶體中;它對符號連結沒有任何作用。_dl_sysdep_read_whole_file
elf/dl-misc.c
避免符號連結需要額外的努力,我想不出載入器會這樣做的任何原因。
要調試您的問題,您可以使用
strace
跟踪載入程序正在讀取或嘗試讀取的文件。