AWS:无法执行二进制文件

AWS : cannot execute binary file

本文关键字:执行 二进制文件 AWS      更新时间:2023-10-16

我的服务器是亚马逊Linux AMI 64位(2014.09-release-notes)

我编译了一个用C++编码的程序(gcc48-C++.x86_64已安装):

[root@ip-***-**-**-*** waveform_generator]# make
Compiled    [src/main.cpp] >> [src/main.o]
Compiled    [src/File.cpp] >> [src/File.o]
Compiled    [src/AGenerator.cpp] >> [src/AGenerator.o]
Compiled    [src/GeneratorSVG.cpp] >> [src/GeneratorSVG.o]
Compiled    [src/GeneratorCanvas.cpp] >> [src/GeneratorCanvas.o]
Compiled    [src/GeneratorPNG.cpp] >> [src/GeneratorPNG.o]
Compiled    [src/Header.cpp] >> [src/Header.o]
Compiled    [src/pngwriter.cpp] >> [src/pngwriter.o]
Built       [wfgen]

现在,当我执行编译后的文件"wfgen"时,控制台返回以下消息:

[root@ip-***-**-**-*** waveform_generator]# bash wfgen
wfgen: wfgen: cannot execute binary file

环境:

[root@ip-***-**-**-*** waveform_generator]# uname -i
x86_64
[root@ip-***-**-**-*** waveform_generator]# file wfgen
wfgen: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=2e7c881c6fc10f12cdf49402edae1cc36b8d77a0, not stripped

你有解决我问题的办法吗?

非常感谢:)

最大。

当您键入时

[root@ip-***-**-**-*** waveform_generator]# bash wfgen

我认为bash希望wfgen是一个shell脚本。相反,您可以直接在提示下键入程序名称

[root@ip-***-**-**-*** waveform_generator]#./wfgen

看起来编译很顺利,file命令的输出看起来不错。我不知道Makefile里有什么,但我想它也会好起来的。

我真的不了解您的环境,所以我在这里做了一点猜测:如果其他一切都很好,但您仍然收到cannot execute binary file错误,那么这可能是因为您的文件系统安装了noexec选项。

要检查是否是这种情况,请运行mount,然后确定当前目录位于哪个装载点下,并检查是否为此装载点设置了noexec装载选项。

如果确实是noexec的问题,您有两个选项:

  1. 在不使用noexec选项的情况下重新装载文件系统。如果您希望这是永久性的,请不要忘记编辑/etc/fstab。(但请注意,noexec可能是有原因的。请确保可以删除它。)
  2. 如果它只是一个二进制文件,请将它移到没有noexec限制的文件系统中,然后从那里尝试。一个好的位置应该是/usr/local/bin目录(或者/usr/local/sbin,如果它是一个管理工具的话)