바이너리를 실행하는 동안 오류가 발생하여 찾을 수 없습니다. 다른 명령을 사용하여 볼 수 있습니다.
>> 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에서 시도했지만 성공하지 못했습니다. cat
및 vi
. 바이너리를 찾아 여는 것 같지만 실행이 실패합니다.
여기에 무엇이 잘못되었는지 말해 줄 수 있는 사람이 있나요? 내가 무엇을 놓치고 있나요?
매우 감사합니다
답변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를 설치할 수 있지만 올바른 아키텍처에 맞는 소프트웨어를 구입하는 것이 더 좋습니다.