c++ AWS:无法执行二进制文件

mdfafbf1  于 2023-03-14  发布在  其他
关注(0)|答案(2)|浏览(127)

我的服务器是Amazon Linux AMI 64位2014.09-release-notes
我编译了一个用C编写的程序(已安装 * gcc 48-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

你有办法解决我的问题吗?
非常感谢!
麦斯

oipij1gg

oipij1gg1#

当你打字的时候

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

我认为bash希望wfgen是一个shell脚本,而不是直接在提示符下输入程序名

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

aoyhnmkz2#

看起来编译很顺利,file命令的输出看起来很好。我不知道Makefile中有什么,但我猜它也会很好。
我不太了解您的环境,所以我在这里做了一点猜测:如果其他一切都很好,但仍然出现cannot execute binary file错误,那么可能是因为您的文件系统是使用noexec选项挂载的。
要检查是否存在这种情况,请运行mount,然后确定当前目录位于哪个挂载点下,并检查是否为此挂载点设置了noexec挂载选项。
如果确实是noexec问题,您有两个选择:
1.不使用noexec选项重新挂载文件系统。如果您希望这是永久性的,不要忘记编辑/etc/fstab。(但是请注意,noexec可能是有原因的。请确保可以删除它。)
1.如果只有一个二进制文件,将它移到一个没有noexec限制的文件系统中,然后从那里开始尝试。一个好的位置是/usr/local/bin目录(或者/usr/local/sbin,如果它是一个管理工具的话)。

相关问题