0

私はリバウンド 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) が気に入らない理由を突き止めたいと思います。 .. 理由があると確信しています。

4

1 に答える 1

0

I have solved it - kind of. I could never get it working on MinGW, but after installing cygwin and installing the requisite packages (even though I could have sworn I did so on MinGW as well), I made progress and it stopped giving me this error. It did give me trouble with freeglut though - turns out I hadn't actually managed to solve that in MinGW, so I did some digging there and discovered I needed to use Cygwin's Xterminal instead of just the standard one, and then it found all the OpenGL files just fine.

Long story short, if you run into this problem and you can't find anything in the code at the source, try double checking your installed libraries - I suppose I just wasn't thorough enough.

于 2015-05-30T02:07:45.700 に答える