我正在尝试使用以下命令编译用Fortran编写的程序make
(我有一个Makefile,并且在包含Makefile的目录中,我键入命令$ make target
,其中“ target”是我的Makefile中存在的系统特定的目标规范。在尝试对目标规范进行各种修订时,尝试调用时经常会收到各种错误消息,下面make
举几个例子:
make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory
make: *** [cmu60] Error 2
和
make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp -DSTRESS -DMPI -P -D'pointer=integer'-I/opt/mpich_intel/include angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory
make: *** [mpich-c2] Error 2
和
make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp -DSTRESS -DMPI -P -D'pointer=integer' -I/opt/mpich_intel/include angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory
make: *** [mpi-intel] Error 2
您知道如何找到错误代码(例如“错误126”和“错误2”)的含义的列表吗?我在另一个网站上找到了该主题,但是我不确定答复的含义。这是否意味着make
错误代码没有系统无关的含义?你能帮我么?谢谢你。
错误代码并非来自make:make报告失败命令的返回状态。您需要查看每个命令的文档以了解每个状态值的含义。除了0 =成功,其他命令=失败之外,大多数命令都不会打扰其他区别。
在您的每个示例中,./dpp
都无法执行。发生这种情况时,尝试调用它的外壳会退出,并显示状态码126(这是标准行为)。正在外壳运行的make实例检测到失败的命令(外壳)并退出,显示为Error 126
。该make实例本身是由make的父实例执行的命令,并且该make
实用程序在错误时返回2,因此父make报告Error 2
。
您的构建失败很可能源于test: too many arguments
。这可能是makefile中的语法错误,也可能是由于当您拥有/bin/sh
非bash时依赖于bash特定的功能。尝试运行make SHELL=/bin/bash target
或make SHELL=/bin/ksh target
; 如果那不起作用,则需要修复makefile。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句