夏休みやったこと

1. asuraのシミュレーションコートを試す
ドキュメントがしっかりしていない。
2003年のソースはコンパイルできたが、動作させるとSegmentation errorで落ちて実行できない。2002年、2004年のソースにいたってはmakeもできなかった。

2. 竹花君中型機シミュレータをCygwinに移植1
cygwin環境でWindowsのOpenGLを使用する方法(ODE cygwinの標準)でmakeするとcout, cinでsegmenation errorになってしまう。この原因を調べたところODEのcygwinで一般的にリンクしている-lstdc++が原因ということがわかった。

また、上記の方法でmakeすると以下のwarningがでる。これを解決するためにはwindowsのOpenGLを使わずに、cygwinのX環境を使えばよい。たたし、3Dグラフィックスのアクセレレーションが働かないので非常に描画が遅い。
Warning: resolving _glPopMatrix by linking to _glPopMatrix@0
Warning: resolving _glDisable by linking to _glDisable@4
Warning: resolving _glEnd by linking to _glEnd@0
Warning: resolving _glVertex3fv by linking to _glVertex3fv@4
Warning: resolving _glBegin by linking to _glBegin@4
Warning: resolving _glLineWidth by linking to _glLineWidth@4
Warning: resolving _glMaterialfv by linking to _glMaterialfv@12
Warning: resolving _glEnable by linking to _glEnable@4
Warning: resolving _glPushMatrix by linking to _glPushMatrix@0

3. 竹花君中型機シミュレータをCygwinに移植2
2の方法でうまくいかなかったで、cygwinのX環境とOpenGLを使用する方法に変更した。具体的にはODEのconfig/user-settingsを
PLATFORM=unix-gcc
に変更して
config/makefile.unix-gccを
C_FLAGS=-c -Wall -fno-rtti -fno-exceptions -I/usr/X11R6/include -I/usr
と変更して後はINSTALLの説明とおりにするとODEのライブラリを作成できる。

この環境で竹花君のシミュレータをコンパイルしても実行時にsegementation errorとなってしまう。gdbで調べたところ以下のメッセージである。どうやらcygwinのシステムに問題があるようだ。

Single stepping until exit from function setgrent,
which has no line number information.
0x610e02a0 in cygwin1!_alloca () from /usr/bin/cygwin1.dll
(gdb) step
Single stepping until exit from function cygwin1!_alloca,
which has no line number information.
0x7c809a81 in VirtualAlloc () from /cygdrive/c/WINDOWS/system32/kernel32.dll
(gdb) step
Single stepping until exit from function VirtualAlloc,
which has no line number information.
0x7c809aa2 in VirtualAllocEx () from /cygdrive/c/WINDOWS/system32/kernel32.dll
(gdb) step
Single stepping until exit from function VirtualAllocEx,
which has no line number information.
0x7c8024cb in ReleaseMutex () from /cygdrive/c/WINDOWS/system32/kernel32.dll
(gdb) step
Single stepping until exit from function ReleaseMutex,
which has no line number information.
0x7c809aae in VirtualAllocEx () from /cygdrive/c/WINDOWS/system32/kernel32.dll
(gdb) step
Single stepping until exit from function VirtualAllocEx,
which has no line number information.

Program received signal SIGSEGV, Segmentation fault.
0x610c5a41 in strlen () from /usr/bin/cygwin1.dll

コメント

タイトルとURLをコピーしました