AWS:无法执行二进制文件

时间:2014-10-09 20:42:06

标签: c++ linux amazon-web-services amazon

我的服务器是亚马逊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

你能解决我的问题吗?

非常感谢你:)

最大

2 个答案:

答案 0 :(得分:1)

键入

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

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

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

答案 1 :(得分:0)

看起来编译很顺利,file命令的输出看起来很好。我不知道Makefile中的内容,但是猜它也没关系。

我真的不了解你的环境,所以我在这里做了一些猜测:如果其他一切都没问题,你仍然得到cannot execute binary file错误,那么它可以是因为您的文件系统是使用noexec选项挂载的。

要检查是否是这种情况,请运行mount,然后确定当前目录所在的挂载点,并检查是否为此挂载点设置了noexec挂载选项。

如果它确实是noexec问题,您有两种选择:

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