i686-elf-gcc
Kali 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