我有一个名为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
答案 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
变量可能会为您提供有价值的调试信息。然后通过
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)。 我希望它有所帮助。 对不起,我的英语)