更新

更新

我正在嘗試使用 ELFRUNPATH變數來實現動態依賴。在此過程中,我得到了一份bash帶有 Changed 的​​二進位檔案的副本RUNPATHldd在其上運行會返回:

$ ldd ./bash 
    linux-vdso.so.1 =>  (0x00007ffe6bdf9000)
    libtinfo.so.5 (0x00007fbf8b97c000)
    libdl.so.2 (0x00007fbf8b776000)
    libc.so.6 (0x00007fbf8b3a5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbf8bba7000)

-- 為什麼沒有依賴項的路徑(來自我的自訂RUNPATH)或not found,這是什麼意思?

我的猜測是: ldd找不到文件,但它們在內存中(括號中的數字是地址),並且ldd通過某種現金機制以某種方式了解它,這是正確的嗎?但是為什麼ldd找不到文件呢?如果它無法從 取得它們RUNPATH,它應該繼續到標準目錄,對吧?

更新

今天它找到了文件(所以這是昨天的現金?):

$ cd dir_chroot2/
$ ldd ./bash
    linux-vdso.so.1 =>  (0x00007ffed3530000)
    libtinfo.so.5 => /home/.../dir_chroot2/./libtinfo.so.5 (0x00007f72c14a8000)
    libdl.so.2 => /home/.../dir_chroot2/./libdl.so.2 (0x00007f72c12a1000)
    libc.so.6 => /home/.../dir_chroot2/./libc.so.6 (0x00007f72c0ed0000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f72c16d4000)

- 但ld-linux-x86-64.so.2仍然從系統目錄中獲取,儘管bash二進位檔案及其上面的所有庫都有RUNPATH=$ORIGIN/.為什麼會這樣呢?是否linux-vdso.so.1以某種方式連結它?

相關內容