zsh: 파일이 존재하더라도 해당 파일이나 디렉터리 오류가 없습니다.

zsh: 파일이 존재하더라도 해당 파일이나 디렉터리 오류가 없습니다.

바이너리를 실행하는 동안 오류가 발생하여 찾을 수 없습니다. 다른 명령을 사용하여 볼 수 있습니다.

>> ls -alh                                                                                                                                                                     
total 1.3M
drwxr-xr-x 3 igor 4.0K Sep 28 15:53 .
drwxr-xr-x 3 igor 4.0K Sep 28 15:53 ..
drwxr-xr-x 2 igor 4.0K Jun  4 09:24 autocomplete
-rw-r--r-- 1 igor  13K Jun  4 09:24 CHANGELOG.md
-rwxr-xr-x 1 igor 1.2M Jun  4 09:24 hyperfine
-rw-r--r-- 1 igor 9.8K Jun  4 09:24 hyperfine.1
-rw-r--r-- 1 igor  12K Jun  4 09:24 LICENSE-APACHE
-rw-r--r-- 1 igor 1.1K Jun  4 09:24 LICENSE-MIT
-rw-r--r-- 1 igor 9.8K Jun  4 09:24 README.md

하지만 명령을 실행하면 다음 오류가 발생합니다.

>> ./hyperfine --version
zsh: no such file or directory: ./hyperfine

두 명령 모두 동일한 디렉터리에서 실행됩니다. 저는 RHEL8을 사용하고 있으며 bash/zsh에서 시도했지만 성공하지 못했습니다. catvi. 바이너리를 찾아 여는 것 같지만 실행이 실패합니다.

여기에 무엇이 잘못되었는지 말해 줄 수 있는 사람이 있나요? 내가 무엇을 놓치고 있나요?

매우 감사합니다

답변1

GNU/Linux x86_64 시스템에서 다운로드한 것처럼 잘못된 아키텍처에 대한 하이퍼파인을 다운로드한 것 같습니다.https://github.com/sharkdp/hyperfine/releases/download/v1.17.0/hyperfine-v1.17.0-i686-unknown-linux-gnu.tar.gz바꾸다https://github.com/sharkdp/hyperfine/releases/download/v1.17.0/hyperfine-v1.17.0-x86_64-unknown-linux-gnu.tar.gz혹은 그 반대로도.

그 다음에:

$ file hyperfine
hyperfine: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=07cbf2d0f0cec091ae460dc287bbacdc9f158849, stripped
$ objdump -s -j .interp hyperfine

hyperfine:     file format elf32-i386

Contents of section .interp:
 0174 2f6c6962 2f6c642d 6c696e75 782e736f  /lib/ld-linux.so
 0184 2e3200                               .2.

x86_64 시스템에서 i686 실행 파일을 실행할 수 있지만 여기서는 32비트 동적 링커(및 소프트웨어가 링크되는 32비트 라이브러리일 가능성이 높음)가 누락되었습니다.

execve()zsh에서 반환되고 변환된 ENOENT 오류는 no such file or directory시스템에서 발견되지 않은 오류와 관련이 있습니다./lib/ld-linux.so.2

32비트 버전의 libc를 설치할 수 있지만 올바른 아키텍처에 맞는 소프트웨어를 구입하는 것이 더 좋습니다.

관련 정보