Ошибка SIGKILL и имена макросов ‹командной строки›0:1 должны быть идентификаторами ошибки при попытке использовать отскок

Я пытался заставить программу rebound n-body работать на моем ПК, что требует некоторого прыжка с обруча, и, естественно, это не сработало. Я ДУМАЮ, мне удалось правильно установить 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 и определениях с символами подчеркивания или цифрами, следующими за ними, но я не нашел ничего подобного в make-файлах ни в папке примера, ни в папке src... Я вообще не трогал файлы восстановления с тех пор, как их получение, поэтому я чувствую, что проблема либо в установке 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 в качестве цели) он ломается - предположительно, когда он пытается его скомпилировать. Или, точнее, когда он пытается начать его компилировать. Прежде чем он получает шанс, что-то происходит с командной строкой, чтобы сломать ее. Если я удалю $(PREDEF) из строки main.c -c, он пройдет это без ошибок, а затем столкнется с той же ошибкой в ​​следующий раз, когда попытается обработать файл, предваряемый этим кодом $(PREDEF). Если я удалю весь код PREDEF, он, кажется, начнет правильно компилироваться, но там появляется больше ошибок, и это может быть прямым результатом этого, поэтому я хотел бы выяснить, почему ему не нравится $(PREDEF). .. Я уверен, что это не просто так.


person spacemoose    schedule 08.04.2015    source источник
comment


Ответы (1)


Я решил это - вроде. Я никогда не мог заставить его работать на MinGW, но после установки cygwin и установки необходимых пакетов (хотя я мог бы поклясться, что сделал это и на MinGW), я добился прогресса, и он перестал выдавать мне эту ошибку. Однако это доставило мне проблемы с freeglut - оказалось, что мне на самом деле не удалось решить это в MinGW, поэтому я немного покопался и обнаружил, что мне нужно использовать Cygwin Xterminal вместо стандартного, а затем он нашел все Файлы OpenGL в порядке.

Короче говоря, если вы столкнулись с этой проблемой и ничего не можете найти в исходном коде, попробуйте перепроверить установленные библиотеки — я полагаю, что я просто не был достаточно тщательным.

person spacemoose    schedule 30.05.2015