Hod*_*rrr 3 linux 64bit executable
尝试在终端上运行可执行文件(我使用的是 Tails live OS),但我不断收到错误消息。我已经设置了权限。我写的命令:
sudo ./home/amnesia/myfile
Run Code Online (Sandbox Code Playgroud)
我收到“命令未找到”?
我尝试使用或不使用 sudo 运行它:
$ sudo /home/amnesia/myfile
sudo: unable to execute /home/amnesia/myfile: No such file or directory
$ /home/amnesia/myfile
bash: /home/amnesia/myfile: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有关文件的信息(它是二进制文件,而不是脚本):
$ ls -l /home/amnesia/myfile
-rwxrwxrwx 1 amnesia amnesia 15327 Sep 3 2013 /home/amnesia/myfile
$ file /home/amnesia/myfile
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared lies), for GNU/Linux 2.6.9, not stripped
Run Code Online (Sandbox Code Playgroud)
有关我的系统的信息:
$ uname -a
Linux amnesia 3.16-3-amd64 #1 SMP Debian 3.16.5-1 (2014-10-10) x86_64 GNU/Linux
$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xd3280633faaabf56a14a26693d2f810a32222e51, stripped
Run Code Online (Sandbox Code Playgroud)
$ /home/amnesia/myfile\nbash: /home/amnesia/myfile: No such file or directory\n$ file /home/amnesia/myfile\nELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared lies), for GNU/Linux 2.6.9, not stripped\n
Run Code Online (Sandbox Code Playgroud)\n\n所以myfile
存在,但运行它会给出消息 \xe2\x80\x9cNo such file or directory\xe2\x80\x9d。在以下情况下会发生这种情况:
消息 \xe2\x80\x9cNo such file or directory\xe2\x80\x9d 实际上与加载程序有关,但 shell 不知道涉及加载程序,因此它报告原始文件的名称。我在\xe2\x80\x9cNo such file or directory\xe2\x80\x9d isn't such file or directory\xe2\x80\x9d中更详细地解释了这一点 Optware 安装的二进制文件。
\n\n为什么你不能运行这个程序?因为您没有 64 位可执行文件的动态加载程序。
\n\n$ uname -a\nLinux amnesia 3.16-3-amd64 #1 SMP Debian 3.16.5-1 (2014-10-10) x86_64 GNU/Linux\n$ file /bin/ls\n/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xd3280633faaabf56a14a26693d2f810a32222e51, stripped\n
Run Code Online (Sandbox Code Playgroud)\n\n您的系统具有 64 位内核,但系统的其余部分是 32 位。Linux支持这种配置(64位内核可以运行64位程序和32位程序,但32位内核只能运行32位程序)。内核可以很好地加载程序;您将能够运行静态链接的 amd64 可执行文件。但是,您没有 64 位加载程序(/lib64/ld-linux-x86-64.so.2
),也可能没有任何 64 位库。因此您无法运行动态链接的 amd64 可执行文件。
为什么要运行 64 位内核和 32 位用户区?
\n\n我不认为 Tails 提供 64 位系统。您应该获得 32 位版本的可执行文件。如果不能,请使用其他发行版(可能在虚拟机中)。
\n