SIGKILL错误和&#34; <命令行=“”/> 0:1宏名称必须是标识符&#34;尝试使用反弹时出错

时间:2015-04-08 01:37:05

标签: command-line macros names sigkill

我一直试图让反弹的n-body程序在我的电脑上工作,这需要一些跳跃,但自然它还没有成功。我 THINK 我已经正确安装了freeglut,但是当我尝试在任何示例中使用make命令时,我仍然会收到此错误。这是我一直得到的完整输出:

make[1]: Entering directory '/c/rebound-master/src
# Remove old object files
rm -f *.o`
# Compile all source files
cc -O3 -std=c99 -Wpointer-arith -Wno-unknown-pragmas -DOPENGL -D.C -D.C -D.C -D.C main.c -c
"<command line>0:1: error: macro names must be identifiers"
"<command line>0:1: error: macro names must be identifiers"
"<command line>0:1: error: macro names must be identifiers"
"<command line>0:1: error: macro names must be identifiers"
main.c: in function 'main':
main.c:248.9: error: 'SIGKILL' undeclared (first use in this function)
signal(SIGKILL, interruptHandler);
main.c:248.9: note: each undeclared modifier is reported only once for each file it appears in
make[1]: ***[all] Error 1
make[1]: Leaving directory '/c/rebound-master/src'
make: ***[all] Error 2

我已经看过关于#ifdef的内容并在其后面加上下划线或数字定义,但我在示例文件夹或src文件夹中的makefile中找不到这样的东西......我还没有触及自从获得它们之后,所有的反弹文件,所以我觉得问题是freeglut安装或MinGW本身 - 任何想法?感谢。

编辑:我已经更多地浏览了MakeFile,并且我已经将问题指向了一个部分:

# Compile all source files
$(CC) $(OPT) $(PREDEF) main.c -c
$(CC) $(OPT) $(PREDEF) problem.c -c
$(CC) $(OPT) $(PREDEF) tree.c -c
$(CC) $(OPT) $(PREDEF) particle.c -c
$(CC) $(OPT) $(PREDEF) gravity.c -c
$(CC) $(OPT) $(PREDEF) integrator.c -c
$(CC) $(OPT) $(PREDEF) boundaries.c -c
$(CC) $(OPT) $(PREDEF) input.c -c
$(CC) $(OPT) $(PREDEF) output.c -c
$(CC) $(OPT) $(PREDEF) collisions.c -c
$(CC) $(OPT) $(PREDEF) collision_resolve.c -c
$(CC) $(OPT) $(PREDEF) communication_mpi.c -c
$(CC) $(OPT) $(PREDEF) zpr.c -c
$(CC) $(OPT) $(PREDEF) display.c -c
$(CC) $(OPT) $(PREDEF) tools.c -c
$(CC) *.o -o nbody $(LIB)

从第一行开始,它到达终点就好了,但是在那之间并继续前进到下一个(带有problem.c作为目标的那个),它会中断 - 大概是在它尝试编译它时。或者,更准确地说,当它试图开始编译它时。在它有机会之前,命令行似乎发生了一些破坏它的事情。如果我从main.c -c行中删除$(PREDEF),它将在没有错误的情况下通过它,然后在下次尝试处理前面带有该$(PREDEF)代码的文件时遇到相同的错误。如果我删除所有PREDEF代码,它似乎开始正确编译,但更多的错误出现在那里,它可能是这个的直接结果所以我想弄清楚它为什么不喜欢$ (PREDEF)......我确定它有一个原因。

1 个答案:

答案 0 :(得分:0)

我已经解决了 - 有点儿。我永远无法让它在MinGW上工作,但是在安装cygwin并安装必需的软件包之后(即使我可以发誓我也在MinGW上做过),我取得了进展并且它停止了给我这个错误。它确实给了我freeglut的麻烦 - 事实证明我实际上没有设法在MinGW解决这个问题,所以我做了一些挖掘并发现我需要使用Cygwin的Xterminal而不仅仅是标准的Xterminal然后它找到所有的OpenGL文件就好了。

长话短说,如果你遇到这个问题并且在源代码中找不到任何代码,请尝试仔细检查已安装的库 - 我想我还不够彻底。