我有以下內容的目錄:libc.so.2是否需要位於/ usr/lib中?
bin/busybox
lib/ld-linux.so.2
lib/libc.so.6
,當我調用:
chroot . bin/busybox sh
它失敗,出現以下:
/bin/busybox: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
當我移動的lib/libc中。 so.6到usr/lib,它工作正常。
爲什麼libc需要在/ usr/lib中?當我調用:
objcdump -p bin/busybox | grep NEEDED
我得到:
NEEDED libc.so.6
所以我想,因爲只有庫的soname是沒有斜線等使用的加載就可以找到它的標準文件夾,它是/ lib和/ usr/lib。顯然,情況並非如此。
要更加混亂使事情,LD-linux.so.2似乎已經是在/ lib中,因爲當它被移動到/ usr/lib目錄,chroot的失敗:
chroot: failed to run command '/bin/busybox': No such file or directory
我學到的實際上是加載程序找不到的錯誤,而不是busybox二進制文件。
libc.so.2 distro具體問題是否存在?如果這很重要,我使用Arch Linux。
在編譯時設置LD_RUN_PATH,或者在運行之前通過導出LD_LIBRARY_PATH來設置庫搜索路徑 – camelccc 2014-10-05 17:41:13
或者執行ln -s /lib/libc.so.6 /usr/lib/libc.so.6 – yoK0 2014-10-05 17:51:09
謝謝。這些方法可以解決這些問題(除了將這些文件保存在目錄中以使其全部工作之外),但不要解釋原始行爲。 – wujek 2014-10-05 19:13:24