私はリバウンド n-body プログラムを自分の PC で動作させようとしてきましたが、これにはフープジャンプが必要で、当然うまくいきませんでした。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 に関するものを見たことがあり、その後にアンダースコアまたは数字が続く定義がありますが、example フォルダーまたは src フォルダーのいずれのメイクファイルにもそのようなものは見つかりませんでした...それ以来、リバウンドファイルにはまったく触れていませんそれらを取得するので、問題はfreeglutのインストールまたはMinGW自体にあるように感じます-何かアイデアはありますか? ありがとう。
編集: MakeFile をもう少し調べて、問題を 1 つのセクションに特定しました。
# 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) が気に入らない理由を突き止めたいと思います。 .. 理由があると確信しています。