我的服务器是亚马逊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
你能解决我的问题吗?
非常感谢你:)
最大
答案 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
问题,您有两种选择:
noexec
选项的情况下重新安装文件系统。如果您希望这是永久性的,请不要忘记编辑/etc/fstab
。 (但请注意,noexec
可能存在原因。请确保将其删除。)noexec
限制的文件系统,然后从那里尝试。一个好的地方是/usr/local/bin
目录(或/usr/local/sbin
,如果它是一个管理工具。)