我的服务器是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
你有办法解决我的问题吗?
非常感谢!
麦斯
2条答案
按热度按时间oipij1gg1#
当你打字的时候
我认为bash希望wfgen是一个shell脚本,而不是直接在提示符下输入程序名
aoyhnmkz2#
看起来编译很顺利,
file
命令的输出看起来很好。我不知道Makefile中有什么,但我猜它也会很好。我不太了解您的环境,所以我在这里做了一点猜测:如果其他一切都很好,但仍然出现
cannot execute binary file
错误,那么可能是因为您的文件系统是使用noexec
选项挂载的。要检查是否存在这种情况,请运行
mount
,然后确定当前目录位于哪个挂载点下,并检查是否为此挂载点设置了noexec
挂载选项。如果确实是
noexec
问题,您有两个选择:1.不使用
noexec
选项重新挂载文件系统。如果您希望这是永久性的,不要忘记编辑/etc/fstab
。(但是请注意,noexec
可能是有原因的。请确保可以删除它。)1.如果只有一个二进制文件,将它移到一个没有
noexec
限制的文件系统中,然后从那里开始尝试。一个好的位置是/usr/local/bin
目录(或者/usr/local/sbin
,如果它是一个管理工具的话)。