나는 다음과 같은 내용으로 디렉토리가 있습니다libc.so.2는/usr/lib에 있어야합니까?
bin/busybox
lib/ld-linux.so.2
lib/libc.so.6
를 내가 호출 할 때 :
chroot . bin/busybox sh
다음과 같은 실패 :
내가 lib 디렉토리/libc의 이동/bin/busybox: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
. usr/lib에 so.6이 있으면 잘 작동합니다.
libc가/usr/lib에 있어야하는 이유는 무엇입니까? 내가 호출 할 때 :
objcdump -p bin/busybox | grep NEEDED
를 내가 얻을 : 라이브러리 만 불리는이로드는 표준 폴더에서 찾을 수있을 것입니다 슬래시 등없이 사용되는
NEEDED libc.so.6
그래서 내가 생각 , 이는/lib 및/usr/lib입니다. 외관상으로는, 이것은 사실이 아니다.
더욱 혼란 문제를하려면 LD-linux.so.2와 그것이는/usr/lib 디렉토리로 이동하면 때문에/lib에 할 것 같다,는 chroot는 실패 :
chroot: failed to run command '/bin/busybox': No such file or directory
하는 I 배운 것은 실제로는 로더가 발견되지 않고 busybox 바이너리가 아닌 오류입니다.
libc.so.2 배포판과 관련된 문제가 있습니까? 이것이 중요한 경우, 저는 아치 리눅스를 사용하고 있습니다.
컴파일 할 때 LD_RUN_PATH를 설정하거나 실행 전에 LD_LIBRARY_PATH를 내보내 라이브러리 검색 경로를 설정하십시오. – camelccc
또는 ln-s /lib/libc.so.6 /usr/lib/libc.so.6 – yoK0
을 실행 해 주셔서 감사합니다. 이러한 방법으로 문제를 해결할 수 있습니다 (디렉토리에 파일을 보관하여 모든 작업을 수행 할 수 있음). 그러나 원래의 동작을 설명하지는 마십시오. – wujek