Bash

文件肯定存在。嘗試執行時得到“沒有這樣的文件或目錄”

  • April 5, 2020

這是在 Arch Linux 上。看看這個:

[saint-llama@hubs bin]$ lsattr
--------------e----- ./install_fnp.sh
--------------e----- ./toolkitinstall.sh
--------------e----- ./FNPLicensingService

[saint-llama@hubs bin]$ file FNPLicensingService 
FNPLicensingService: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped

[saint-llama@hubs bin]$ ldd FNPLicensingService 
       linux-vdso.so.1 (0x00007ffcbafd8000)
       libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f870ce06000)
       librt.so.1 => /usr/lib/librt.so.1 (0x00007f870cdfb000)
       libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f870cdd9000)
       libm.so.6 => /usr/lib/libm.so.6 (0x00007f870cc93000)
       libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f870cc79000)
       libc.so.6 => /usr/lib/libc.so.6 (0x00007f870cab2000)
       /lib64/ld-lsb-x86-64.so.3 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f870ce60000)

[saint-llama@hubs bin]$ sudo ./FNPLicensingService 
sudo: unable to execute ./FNPLicensingService: No such file or directory

所以它肯定存在。Ldd 顯示所有庫都已連結。文件顯示它是 64 位精靈(我正在安裝 64 位)。

是什麼賦予了?為什麼我得到“沒有這樣的文件或目錄”?

這個命令在 Arch Linux 上為我修復了它,允許我執行 elf 二進製文件:

sudo pacman -Syy ld-lsb lsb-release

對於其他風格的 linux,

您應該安裝ld-lsb 包(或lsb-compat任何包含 的類似包ld-lsb-x86-64.so.3)或創建一個包裝器/可執行腳本,通過現有的動態連結器啟動您的程序:

#! /bin/sh
/usr/lib64/ld-linux-x86-64.so.2 ./FNPLicensingService "$@"

是什麼賦予了?為什麼我得到“沒有這樣的文件或目錄”?

那是眾所周知的疣。儘管顯示了二進製文件的路徑,但錯誤消息是關於二進製文件所需的動態連結器/ELF 解釋器不存在,而不是關於二進製文件本身。

的輸出ldd不會告訴您動態連結器是否真的存在;ldd現在使用“安全路徑”列表中的動態連結器,而不是燒錄到二進製文件中的連結器,以防止ldd在隨機二進製文件上執行的使用者傷害自己。在解釋器不存在的二進製文件的情況下,它的輸出也令人困惑和誤導。簡單的例子:

$ cp /bin/sh /tmp/sh
$ patchelf --set-interpreter /no/such/file /tmp/sh
$ /tmp/sh
bash: /tmp/sh: No such file or directory
$ ls /tmp/sh
/tmp/sh
$ file /tmp/sh
/tmp/sh: ELF 64-bit LSB ..., interpreter /no/such/file, ...
$ ldd /tmp/sh => /foo/bar => /lib64/ld-linux-x86-64.so.2
...
       /no/such/file => /lib64/ld-linux-x86-64.so.2 (0x00007fc60d225000)

引用自:https://unix.stackexchange.com/questions/577463