실행 파일에 "해당 파일이나 디렉터리가 없습니다"가 발생하지만 파일이 존재하고 ldd가 존재하는 모든 라이브러리를 보고합니다.

실행 파일에 "해당 파일이나 디렉터리가 없습니다"가 발생하지만 파일이 존재하고 ldd가 존재하는 모든 라이브러리를 보고합니다.

따라서 다른 명령을 사용하면 실행 파일이 존재하지만 실행하려고 하면 존재하지 않는다고 주장합니다.

이름을 "cat"으로 바꿨기 때문에 이름에 특수 문자는 아닙니다. 올바르게 설계된 바이너리인 것 같습니다... "그렇습니다", 문제는 파일 외에 오류 메시지를 던질 수 있는 또 다른 것이 무엇인지입니다... 분명히 존재하는 것처럼 파일이 존재하지 않습니다!

LDD.xls

    linux-gate.so.1 =>  (0xb77bc000)
    libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xb6cc2000)
    libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb6c98000)
    libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb6c8f000)
    libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb6c76000)
    libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb6c6d000)
    libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb6bd1000)
    libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb6b9b000)
    libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb6b88000)
    libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb6a50000)
    libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb6a2a000)
    libQtSql.so.4 => /usr/lib/i386-linux-gnu/libQtSql.so.4 (0xb69ea000)
    libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xb6704000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb66ea000)
    libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb66e7000)
    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb65ea000)
    libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb6598000)
    librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb658f000)
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb6575000)
    libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb6571000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb6485000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb6468000)
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb6305000)
    libaudio.so.2 => /usr/lib/i386-linux-gnu/libaudio.so.2 (0xb62ea000)
    libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb62e4000)
    libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xb62ba000)
    libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb6297000)
    /lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xb77bd000)
    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb6258000)
    libffi.so.5 => /usr/lib/i386-linux-gnu/libffi.so.5 (0xb624f000)
    libXt.so.6 => /usr/lib/i386-linux-gnu/libXt.so.6 (0xb61f1000)
    libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb61ee000)
    libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb61e8000)

이름 없음-m(또한 내 배포판은 Debian wheezy입니다.)

i686

파일xls

xls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
     dynamically linked (uses shared libs), for GNU/Linux 2.6.15,
     BuildID[sha1]=0xa9786f61b371a683ae4306792f95e0636c288883, not stripped

ls -ld xls

-rwxr-xr-x 1 root root 4634064 May 20 14:35 xls

고양이

root@pc170:# cat xls > zls
root@pc170:# ./zls
-su: ./zls: Permission denied
root@pc170:# chmod +x zls
root@pc170:# ./zls
-su: ./zls: No such file or directory

시간

root@pc170:# time ./zls
-su: ./zls: No such file or directory

real    0m0.002s
user    0m0.000s
sys     0m0.000s

답변1

이것은 다음과 같이 보입니다.로더 누락. 짧은 이야기: 프로그램에서 예상하는 동적 로더가 누락되었으며 이 경우 오류 메시지는 오해의 소지가 있습니다. 이전에 이에 대해 논의한 적이 없는 것 같아서 설명하겠습니다 ldd. 대부분은 형태의 선으로 구성됩니다 library_soname => /path/to/library_file.

/lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xb77bd000)

이러한 라이브러리 내에서 공유 라이브러리가 아닌 것을 볼 수 있습니다. 공유 라이브러리를 로드하는 프로그램입니다. 프로그램이 이를 요청하고 있지만 /lib/ld-lsb.so.3커널이 이를 찾지 못하여 "해당 파일이나 디렉터리가 없습니다"라고 보고됩니다. 그러나 로더 는 특별한 환경에서 하드 코딩된 로더를 호출하는 래퍼 스크립트이고 프로그램이 예상하는 로더 경로에 관계없이 항상 자체 경로를 보고하기 ldd때문에 실제로 발견됩니다 .ldd

/lib/ld-linux.so.2귀하의 시스템에는사실은x86_32 Linux 시스템에서 ELF 로더의 표준 위치입니다. 프로그램에서는 /lib/ld-lsb.so.3다음을 요구합니다.법학기준장소.

lsb-coreDebian의 패키지 와 같은 배포판에 대한 최소 LSB 지원을 설치하십시오 . 배포판에 없는 경우(대부분 있음) 심볼릭 링크를 만듭니다 /lib/ld-lsb.so.3 -> ld-linux.so.2. 최후의 수단으로 로더를 명시적으로 호출할 수 있습니다 /lib/ld-linux.so.2 ./xls.

관련 정보