如何在Linux中运行二进制文件

时间:2012-02-28 06:02:36

标签: linux bash

我有一个名为commanKT的文件,想要在Linux终端中运行它。有人可以通过命令运行此文件来帮助吗?我试过了./commonRT,但我收到了错误:

"bash: ./commonrt: cannot execute binary file"

[blackberry@BuildMc MainApp]$ ls -al commonKT
-rwxrwxr-x. 1 sijith sijith 10314053 Feb 27 16:49 commonKT

11 个答案:

答案 0 :(得分:26)

要执行二进制文件,请使用:./binary_name

如果您收到错误:

  

bash:./ binary_name:无法执行二进制文件

这是因为它是使用工具链编译的,该工具链用于与您尝试运行二进制文件的目标不同的目标。

例如,如果使用arm-none-linux-gnueabi-gcc编译'binary_name.c'并尝试在x86计算机上运行生成的二进制文件,则会出现上述错误。

答案 1 :(得分:9)

要从shell在Linux中执行二进制文件或.run文件,请使用dot forward slash friend

 ./binary_file_name

如果由于权限而失败,则可以在执行前尝试此操作

 chmod +x binary_file_name
 # then execute it
 ./binary_file_name

希望有所帮助

答案 2 :(得分:5)

:-)如果不是拼写错误,为什么使用./commonRT代替./commonKT ??

答案 3 :(得分:5)

它正在安装的音量noexec

答案 4 :(得分:2)

您可能在构建主机与执行主机上使用不兼容的体系结构设置编译了二进制文件。 您能否通过

查看启用的目标设置
g++ {all-your-build-flags-here} -Q -v --help=target

在您的构建主机上?特别是,COLLECT_GCC_OPTIONS变量可能会为您提供有价值的调试信息。然后通过

查看执行主机上的CPU功能
cat /proc/cpuinfo | grep -m1 flags

请注意构建主机上的-msse4.2 [enabled]不匹配,但CPU功能中缺少sse4_2标记。

如果这没有帮助,请在构建和执行主机上提供ldd commonKT的输出。

答案 5 :(得分:2)

这是@craq:

的答案
  

我刚从C源编译文件,并使用chmod将其设置为可执行文件。来自gcc没有警告或错误消息。

我有点惊讶你必须'将它设置为可执行文件' - 我的gcc总是设置可执行标志本身。这告诉我gcc并不期望这是最终的可执行文件,或者它不希望它在这个系统上可执行。

现在我试图创建目标文件,如下所示:

$ gcc -c -o hello hello.c
$ chmod +x hello

hello.c是一个典型的“Hello World”程序。)但我的错误信息有点不同:

$ ./hello
bash: ./hello: cannot execute binary file: Exec format error`

另一方面,这样,file命令的输出与你的相同:

$ file hello
hello: ELF 64-bit LSB  relocatable, x86-64, version 1 (SYSV), not stripped

如果我正确编译,它的输出会更长。

$ gcc -o hello hello.c
$ file hello
hello: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=131bb123a67dd3089d23d5aaaa65a79c4c6a0ef7, not stripped

我所说的是:我怀疑它与编译和链接代码的方式有关。也许你可以说明你是如何做到的?

答案 6 :(得分:2)

对我有用的唯一方法(摘自here):

.xlsx

然后通过编写

来运行它
chmod a+x name_of_file.bin

如果您收到权限错误,则可能必须以root权限启动您的应用程序:

./name_of_file.bin

答案 7 :(得分:1)

或者,该文件属于您无法使用硬件运行的文件类型和/或体系结构,并且/或者也没有回退binfmt_misc条目来以其他方式处理特定格式。使用file(1)确定。

答案 8 :(得分:0)

如果它不是拼写错误,正如前面所指出的那样,编译器选项可能是错误的,例如在32位下编译64位。它不能是工具链。

答案 9 :(得分:0)

您的编译选项 -c 使您的编译只是编译和汇编,但没有链接。

答案 10 :(得分:-1)

二进制文件的完整路径。例如:/ home / vitaliy2034 / binary_file_name。要么 使用指令“./+binary_file_name”。 './'在unix系统中它返回目录的完整路径,在其中打开终端(shell)。 我希望它有所帮助。 对不起,我的英语)