Linux Bash:没有这样的文件或目录吗?

Linux Bash:没有这样的文件或目录吗?,linux,bash,binary,webserver,wkhtmltopdf,Linux,Bash,Binary,Webserver,Wkhtmltopdf,我尝试在Linux共享Web服务器(Debian,64位)上使用可执行脚本(wkhtmltopdf)。我很确定我编译的所有内容都是正确的,但每当我想要执行文件时,我都会得到响应: > ./wkhtmltopdf -H -bash: ./wkhtmltopdf: No such file or directory 为确保文件存在,此处显示ls输出: > ls wkhtmltoimage wkhtmltopdf 此外,我在其上测试了file命令,该命令输出以下内容: > fi

我尝试在Linux共享Web服务器(Debian,64位)上使用可执行脚本(wkhtmltopdf)。我很确定我编译的所有内容都是正确的,但每当我想要执行文件时,我都会得到响应:

> ./wkhtmltopdf -H
-bash: ./wkhtmltopdf: No such file or directory
为确保文件存在,此处显示ls输出:

> ls
wkhtmltoimage  wkhtmltopdf
此外,我在其上测试了file命令,该命令输出以下内容:

> file wkhtmltopdf
wkhtmltopdf: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
我现在的问题是:

为什么bash告诉我没有“文件或目录”,而显然有一个?

我的第一个猜测是共享服务器不允许执行二进制文件?但是,对于不同的bash输出,这不应该是权限问题吗

编辑:

> id 
uid=2725674(p8907906) gid=600(ftpusers) groups=600(ftpusers)

> ls -l wkhtmltopdf
-rwxrwxrwx 1 p8907906 ftpusers 39745960 Jan 20 09:33 wkhtmltopdf

> ls -ld
drwx---r-x 2 p8907906 ftpusers 44 Jan 28 21:02 .
我打赌你会想念动态链接器。就做一个

readelf --all ./wkhtmltopdf | grep interpreter
您应该得到如下输出:

[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
您的系统很可能缺少解释器(示例中为
/lib64/ld-linux-x86-64.so.2
)。在这种情况下,bash会大叫
没有这样的文件或目录
,就像二进制文件本身丢失一样

您可以尝试使用不同的链接器。有时候你可以成功。只要做一个:

/path/to/the/linker /path/to/your/executable
此命令:

find /lib* -name ld-linux\*
将帮助您找到系统上的链接器。或者您可以对某个确实运行的命令执行
readelf
命令。它将向您显示正确、有效的链接器

,因为您正在运行Debian系统,只需执行

sudo apt-get install wkhtmltopdf
要安装该工具的本机版本,请执行以下操作:)

$ readelf --all ./wkhtmltopdf | grep interpreter # readelf: Displays information about ELF files.
      [Requesting program interpreter: /lib/ld-linux.so.2]
在可执行文件工作的计算机上:

$ ls -lah /lib/ld-linux.so.2
lrwxrwxrwx 1 root root 25 Apr 16  2018 /lib/ld-linux.so.2 -> i386-linux-gnu/ld-2.27.so
$ dpkg -S /lib/ld-linux.so.2  # -S, --search filename-search-pattern: Search for a filename from installed packages.
libc6:i386: /lib/ld-linux.so.2
所以要解决这个问题()


如果您的文件系统安装了“noexec”选项,您将得到一个“权限被拒绝。权限是什么?添加到您的问题输出中:
id
ls-l wkhtmltopdf
看起来不错,您在您的curr\u dir和parent\u dir上看到的perms是什么,即
ls-ld…”。祝你好运。尝试重新启动bash实例。输出与你说的完全一样。我现在如何才能明确地检查
/lib64/ld-linux-x86-64.so.2
是否存在?发出
ls-l/lib64/ld-linux-x86-64.so.2
。将其输出粘贴到此处。ls输出为:
ls:cannot access/lib64/ld-linux-x86-64.so.2:没有这样的文件或目录
so thx:)是的,有一秒钟我停止了思考:DI更新了我的答案,如果二进制文件没有与外来库链接,您如何“覆盖”问题。
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386  # GNU C Library: Shared libraries (from apt show)