[英]compiled C file not executable
因此,当我尝试在我学校的“大力神”服务器上运行已编译的C程序时,它会像我通常期望的那样运行。 但是,我有一个需要使用fork的赋值,并且禁止运行在该服务器上运行的程序,而是通过从命令行远程连接到几台Linux机器之一并在那里运行它来运行它们。
但是,任何尝试这样做都会给我这个错误:
shell2: Exec format error. Binary file not executable.
总而言之,我的命令提示符如下所示:
a049403[8]% shell2
shell2: Exec format error. Binary file not executable.
我在工作目录中有shell2文件,当我输入“ls”时,它会显示*字符,表明它在名义上是一个可执行文件。 我已经尝试将其权限设置为777.它为我一直在使用和运行的其他C程序产生相同的错误,并且“hercules”可以运行完全相同的文件而没有任何困难或投诉。 我的特定程序的make文件如下所示:
all: shell2
Basics.o: Basics.c Basics.h
cc -c Basics.c
doublinked.o: doublelinked.c doublelinked.h
cc -c doublelinked.c
main.o: main.c Basics.h doublelinked.h
cc -c main.c
shell2: main.o Basics.o doublelinked.o
cc main.o Basics.o doublelinked.o -o shell2
clean:
rm -f *o shell2
...如果我重新运行makefile,它似乎没有任何困难地构建程序。
那么,并且有理由可以编译C程序的环境无法运行它们? 任何可能的解决方法?
如果你正在运行一个在不同(不兼容)架构上编译的程序,你几乎肯定会遇到麻烦。
从您正在传输和尝试运行可执行文件,或尝试在新计算机上从头开始构建可执行文件的问题,有点不清楚。 还不清楚你的make
(如果你在新机器上运行它)是否完全重建了一切。
但是,鉴于"Exec format error"
,可以肯定的是,前一种情况是您遇到的情况,尝试运行不兼容的可执行文件。
所以,这是我的建议。 将所有内容传输到新计算机并执行:
make clean all
确保一切都在重建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.