실행 파일 실행 중: 해당 파일이나 디렉터리가 없습니다.

실행 파일 실행 중: 해당 파일이나 디렉터리가 없습니다.

i686-elf-gccKali Linux에서 다운로드한 실행 파일을 실행하려고 합니다.이 저장소. 크로스 컴파일러입니다. 문제는 내가 작성한 스크립트와 터미널 모두에서 파일이 존재한다는 것을 알 수 있음에도 불구하고 실제로 실행하면 No such file or directory오류가 발생한다는 것입니다. 이를 설명하는 이미지는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

또한 실행 파일에 필요한 권한을 부여했다고 말씀드리고 싶습니다.

답변1

일반적으로 "실행할 수 없습니다... 해당 파일이나 디렉터리가 없습니다"는 실행 가능한 바이너리 자체를 의미합니다.또는 필요한 라이브러리 중 하나존재하지 않는다. 라이브러리 자체에는 다른 라이브러리가 필요할 수도 있습니다.

지정된 실행 파일이나 라이브러리에 필요한 라이브러리 목록을 보려면 다음 명령을 사용할 수 있습니다 ldd.

$ ldd /usr/local/bin/i686-elf-gcc

결과 목록에 다음과 같은 줄이 포함되어 있으면

<library name> => not found

그러면 위의 라이브러리가 설치되어 있고 라이브러리 검색 경로에 있는지 확인하면 문제를 해결할 수 있습니다.

이 경우 라이브러리는 /usr/local/lib또는 에 위치할 수 있지만 /usr/local/lib64어떤 이유로 해당 디렉토리는 라이브러리 검색 경로에 포함되지 않습니다.

특정 프로그램이나 세션에서만 추가 라이브러리를 사용할 수 있도록 하려면 LD_LIBRARY_PATH 환경 변수를 사용하여 누락된 라이브러리를 검색해야 하는 추가 경로를 식별할 수 있습니다. 이렇게 하면 시스템 기본 라이브러리와의 충돌 가능성이 최소화됩니다.

그러나 시스템 기본 라이브러리 검색 경로에 라이브러리 디렉터리를 추가하려면 해당 디렉터리를 /etc/ld.so.conf파일에 추가하거나 /etc/ld.so.conf.d/*.conf원하는 파일을 생성하고 ldconfig루트로 명령을 실행하여 라이브러리 검색 캐시를 업데이트해야 합니다.

예를 들어 누락된 라이브러리가 거기에서 발견되고 디렉터리가 존재하는 경우 /usr/local/lib64다음 과 같은 파일을 /etc/ld.so.conf.d만들어야 할 수 있습니다 .crosscompiler.conf

# echo "/usr/local/lib64" > /etc/ld.so.conf.d/crosscompiler.conf
# ldconfig

관련 정보