Geant4 installation on Cygwin (MS Windows (2000, XP))
2004.02.13 Version by Fut:
Since 2002.12.22


[Fut's Home | Contents | Cygwin | Geant4 ]

Index

ダウンロード

 Googleで検索したら、 これ が引っかかったので、見覚えもあるし従ってやってみよう。
 ちなみに、我々日本のユーザの ための総本山のようなWEBはあるけど…、
 ソース を取ってくる。ヴァージョンは6.0になっている。
まず、どこに置いておけばいいか分からない。 そして、どこにインストールされるのだろう?
 3種類あるうちGNU tarというやつを、 『~/TMP/GEANT4/』というディレクトリを作って、そこへ置いた。 はじめ、IEでダウンロードしていたが、Geant本体約12MBのはずが 50MB超えても延々ダウンロードが続いてる! 慌てて切断し、Cygwin上にデフォルトでインストールされた lynxでダウンロードした。
$ gunzip geant4.6.0.gtar.gz
ところで、GNU tarであるかどうかってどう確かめる?
 今日はここまで。 (2003.12.22)
 考えてみれば、そもそも “Cygwinとは、GNUのツールをWindows上で動かそうというもの” だとすれば、 デフォルトで入っているものはGNU tarだろうなと予期する のは、自然だと思われる。しかし、man tarがエントリなし なのはどういうことか?(インストール失敗してる?)
$ tar xvf geant4.6.0.gtar
で、カレントディレクトリにgeant4.6.0というサブディレクトリ が生成され、それ以下に全ファイルが展開された。

 さて、リリースノートやインストールの手引きを読む段階に入ったのだが、 Windows(Cygwin)の関連には必ず“MS Visional C++”という指定 がしつこいほど付きまとっている。 これが今後の鬼門となろう。 既に時代は“MS Visual Studio”となっていたりするし、これは高価だ。 (2003.12.23)

 [補足]上記2つの操作は、オプション付加tarコマンド ひとつで済むようだ。
$ tar zxvf geant4.6.0.gtar.gz
こうすれば、元のアーカイバ*.gzを変えないので保守が便利。 (2003.12.25)

C++の基本と(日本語)環境構築

 とにかくひととおりC++の基本をものにしなくてはならない。 その過程で、Cygwinの(日本語)環境構築も並行して進める必要があった。 また、ホスティング先移転の状況も重なり、 せっかく覚えつつあるASPも一旦中断し、WEB構成も整理する。 これらが渾然一体になった形 で進めていかざるを得ない。 (2003.12.26)

[2k]Geant4インストールに必要な事項の吟味

 インストールガイド に曰く、
一、C++コンパイラ(Unixはg++、WindowsはVisual C++
このことは、継続して調査中
二、CLHEPライブラリ
CLHEP - A Class Library for High Energy Physics 直訳すると『高エネルギー物理学のための“クラス”のライブラリ』な訳ですな。 これまでは、ぼんやりとしか分からなかったが、今回少し 齧った ので、C++の用語である“クラス”と思えば頭に入りやすい。
$ mkdir clhep
$ mv clhep-1.8.1.0.tgz clhep
$ cd clhep/
$ tar -zxvf clhep-1.8.1.0.tgz
$ cd 1.8.1.0/CLHEP/
$ export CXX=g++ (←よけいみたいだ。コンパイラがCCになってしまうが…)必要!
$ ./configure (出来た『Makefile』はいじらない
$ make check
コンパイルは通ったようだが テストでエラー! (2003.12.26)

[XP]CLHEPリベンジ
 年末年始に入り、XPでCLHEPリベンジ。 “$ export CXX=g++”を行なうことと、 “出来たMakefileはいじらない”ことに気をつけたら、
昨日と同じ手順で、あっさり成功。
$ make check

All tests passed.
これで入ったのは次のとおり。
  1. /usr/local/include/CLHEP/以下のヘッダファイル群
  2. /usr/local/libに入った1つのライブラリファイル libCLHEP-g++.1.8.1.0.a
なお、 等は失敗する。 (2003.12.28)
 同じことをWindows2000でもやってみたが、 さいごやはりtestのコンパイルで(?)うまくいかない。 少しきちんと時間をかける必要あり。 (2003.12.29)
 再チャレンジ。 “$ make check | tee log200312291003.txt” …⇒無事“All tests passed.”! 事前に“$ make clean”したことくらいかなぁ、違いは。 めでたく“$ make install”。 (2003.12.30)
三、Native STL
g++関連で元々入ってんだよねぇ?分からん。
四、GNU Make
これも、そもそもCygwinってGNU環境なんだから、makeったら GNU Makeのことだろーが。manページにも書いてある。
…って、スクリプトが進まん。 なんか臭かったんだよねぇ。 コマンド名が“$ gmake”というふうに書かれてる。 エラーの報告文も、“ターゲットがない”とか、 『Makefile』がないような感じの出方がしている。 それで、ソースファイルのあるディレクトリを覘いてみると、 『Makefile』はなく『GMUmakefile』が存在する ということが分かった。 ふーむ、そもそも、gmakeというようなコマンドはないし、 どうしようかな?つまり、gmakeって、 “$ make --makefile=GNUmakefile” とやったような動作をすればいいんだよな? また、そもそも./Configureがきちんとディレクトリを 見ていない感じもする。 インストールガイドにも、“$G4INSTALL(標準的には ~/geant4から$ ./Configure -install」を実行せよ” というような書き方をしている。
 結局、次のような対処を実施した。
  1. $ tar -zxvf geant4.6.0.gtar.gz”を実行して 出来たgeant4.6.0ディレクトリの中にある 全てのファイル・サブディレクトリを~/geant4/へコピー。
    $ tar -zxvf geant4.6.0.gtar.gz
    $ cd geant4.6.0
    $ tar cf - . | (cd ~/geant4; tar vxf -)
    $ cd ..
    $ rm -rf geant4.6.0
    
  2. “$ alias gmake='make --makefile=GNUmakefile'”を実行した後、 “$ cd ~/geant4”、“$ ./Configure -install”
これが正解かどうかは分からないが、少なくともこれをすることによって スクリプトは取敢えず動き続けている(約3時間経過)。 なお、アーキテクチャは自動検出の“WIN32”を、 コンパイラはVCではなく手動で変えて“g++”を それぞれ選択した(『WIN32-g++』)。 途中、OpenGL(Cygwinデフォルトで入っているみたい)と、 DAWNを手動でyにした以外は、 デフォルトをリターンしていっただけ。
config/liblist.cでこけた。 コンパイルはうまくいってそう。インストール過程でこけていた。
少し、ログをとりながらじっくりやる必要あり。 (2003.12.29)

[XP]Configure関連スクリプトの訂正

 結局、 ~/geant460gpp/Configure が原因ではなかった。 ただし、一箇所、ログには残らないエラーが次のように発生している。
Creating configuration setup file...
sed: config.shを読み込めません: No such file or directory
sed: config.shを読み込めません: No such file or directory

Hmm...You had some extra variables I don't know about...
      I'll try to keep 'em...

    Propagating previous variable $Author...
    Propagating previous variable $CONFIG...
    Propagating previous variable $Date...
…
原因究明は継続するが、これは現時点ではペンディング。 今後問題になれば要解決。

 最終的なエラー表示は次のとおり。
############################################################
# It looks like you had errors during Geant4 installation  #
# (or interrupted installation)!                                 #
# Please check log file:                                         #
…
これは、 ~/geant460gpp/.config/bin/WIN32-g++/install.sh の実行中に起こるが、このスクリプトはConfigureプロセスの過程においては、 ~/geant460gpp/config/scripts/install.sh.SH から毎回自動生成されるので、訂正すべきは後者である。
 install.sh.SHで上記のエラーの判定条件は次のようになっている。
# Check for errors in log file
export err=\$[ \`grep Error $g4conf/g4make.log | wc -w\` ]
export int=\$[ \`grep Stop\. $g4conf/g4make.log | wc -w\` ]
…
if [ X\$err = X0 -a X\$int = X0 ] ; then
…
これにはいろいろ問題があって、書き換えた。
まず、wcの出力は、値がたとえ『0』でも、 『 (空白6個)0』となるようなので、 if文の中の論理式が偽になってしまう。 (そもそもgrepの使い方が変ではないか? これでは、ファイル名の一部に“Error”がある場合は コンパイルが成功してもエラーにカウントしてしまう。 また、“Stop\.”は『""』で囲わないと思ったとおりの動作をしない。) 多分、先頭空白処理として導入されておるであろう“$[ … ]”は (コマンドラインではうまくいくのだが)、 スクリプト動作としてはうまくいかないので、 姑息だが次のようにしてみた。
…
err1=\`grep Error $g4conf/g4make.log | wc -w\`
int1=\`grep "Stop\." $g4conf/g4make.log | wc -w\`
export err="\`echo \${err1}\`"
export int="\`echo \${int1}\`"
…
この訂正により最終判定はパスして、 次のようにインストールが成功したように表示されるようになる。
####################################################
# Your Geant4 installation seems to be successful! #
# To be sure please have a look into the log file: #
…
 しかし、その後 ~/geant460gpp/Configure を実行した際にまだ、
WARNING: Geant4 is NOT installed yet!
You (or the administrator if you have not enough privileges)
should start with $G4INSTALL/Configure -install.
(where $G4INSTALL is Geant4 install directory).
が出ていることを見ると、 “インストール”が完了しているようには見えていない のだろう。 はたして、どういう状態になっていれば 『インストール完了状態』 といっていいのだろう? 要継続調査。 (2004.01.10)

[2k]【追記】環境変数メモ

 コマンドラインから打ち込んで設定した環境変数。
$ export G4SYSTEM="WIN32-g++"
$ export G4INSTALL="/home/(ユーザ名)/geant460gpp"
$ export G4WORKDIR="/home/(ユーザ名)/geant460gpp"
$ export CLHEP_BASE_DIR="/usr/local"
(2004.01.13)

[XP]DAWNのビルド、インストール

 DAWNは Windowsバイナリもあるが、コンパイルしてみた。 configureで適当に設定したが、 手動でMakefileを修正。 ポイントは、出来た実行ファイルの拡張子に.exeをつけ、 dawn.exeとして扱う箇所と、 dawnという名前として扱う箇所を明確に区別すること。 (2003.12.29)

[2k]

X11OpenGLがうまくいかない場合は、XFree86関係をインストールし直す。

### OpenGL lib directory
OPENGL_LIB = -L/usr/X11R6/lib

### OpenGL include directory
OPENGL_INC  = -I/usr/X11R6/include
OPENGL_INC += -I/usr/X11R6/include/GL


☆Windows環境のポイント
> EXEC_EXE           = $(EXEC).exe
☆stripコマンドとcpコマンドは拡張子が必要
<               strip  $(EXEC)
<               cp $(EXEC) ./$(PRIM_DATA_DIR)
---
>               strip  $(EXEC_EXE)
>               cp $(EXEC_EXE) ./$(PRIM_DATA_DIR)
☆同上
<               strip $(G4TEST_INET)
---
>               strip $(G4TEST_INET).exe
☆同上
<               strip $(G4TEST_UNIX)
---
>               strip $(G4TEST_UNIX).exe
☆拡張子付のファイルの扱いを付加
<       rm -f $(EXEC) a.out
---
>       rm -f $(EXEC) a.out $(EXEC_EXE)
☆同上
>       rm -f $(EXEC_EXE) ./$(PRIM_DATA_DIR)/$(EXEC_EXE)
☆同上
>       rm -f $(G4TEST_INET).exe $(G4TEST_UNIX).exe
☆インストール時におけるcpコマンド
<       cp -p ./$(EXEC)            $(INSTALL_DIR)/$(EXEC)
---
>       cp -p ./$(EXEC_EXE)        $(INSTALL_DIR)/$(EXEC_EXE)
(2004.01.08)
 OpenGLの指定をちゃんとしとかないと、 レンダリングの結果の*.epsファイルが出てこない。 (上記の赤字部分を追記。)

 で、これを見る方法。
  1. Adobe AcrobatPDFへ変換してしまう。
    ;手っ取り早いし設定の面倒がないけど、 そのマシンにインストールされてなければ使えない。 ライセンス費用の問題
  2. startx活用。
    /bin/gs(≡/usr/bin/gs)をリネームし、 which gsした時に/usr/X11R6/bin/gsとなるようにする。
    ;Xサーバを立ち上げるのは多少面倒。これが本来の動作。
  3. gswin32導入。
    Windows版のghostscriptを拾ってくる。 (たとえばpTeX関係のこのページから得た。) ;うまくリンクを張ればコマンドラインから絵を飛ばせる。 毎度、“$ gv: Unable to open the display.”が出るのが気持ち悪い。
(2004.01.13)

[2k]サンプルコードのビルドと実行

  (2004.01.15)


[2k]“Microsoft Visual C++ .net 2003”コンパイラ用の環境構築

 出発点は、unofficially supported package
 まず、CLHEPがいるので、 最新ソースよりひとつ版は若いが、1.8.1.0を入れる。 (例えば、CLHEP_BASE_DIR=C:\Clhepとかしようと思ったら、
$ tar -zxvf clhep-1.8.1.0-win32-vc7.tgz -C /cygdrive/c/Clhep
などとやればいいのだが、今回はこのような分かりやすいPATHは不要のようであった。)
 次に環境変数設定。 不要なのかも知れないが、後で DAWN の構築のこともあって、 システムの環境変数『Path』の先頭に、
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
を加えた。 (2004.01.19)
[2k]「geant4-setup.sh」、「vsvars7.sh」等の修正
 先ず、geant4-setup.sh
< export CLHEP_BASE_DIR=C:/Clhep
---
> FUT_DOWNLOAD_DIR="C:/futami/Geant4/src_for_WIN32"
> CLHEP_BASE_DIR="${FUT_DOWNLOAD_DIR}/clhep/CLHEP/1.8.1.0"
> export CLHEP_BASE_DIR

> unset FUT_DOWNLOAD_DIR

> G4INSTALL="C:/g4/geant4_6_0"
> export G4INSTALL

 次に、vsvars7.sh
< FrameworkDir="c:\WINDOWS\Microsoft.NET\Framework"
< FrameworkVersion="v1.0.3705"
< FrameworkSDKDir="c:\Program Files\Microsoft Visual Studio .NET 2003\FrameworkSDK"
---
> FrameworkDir="C:\WINNT\Microsoft.NET\Framework"
> FrameworkVersion="v1.1.4322"
> FrameworkSDKDir="C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1"

> export PATH

< LIB="$LIB;$MSVCDir\PlatformSDK\lib\prerelease"
---
> LIB="$LIB;$MSVCDir\PlatformSDK\Lib\prerelease"
※注)ここで、環境変数 (G4INSTALLCLHEP_BASE_DIR) の記述の仕方が、 完全にCygwinのやり方(/cygdrive/c/g4/…)ではなく、 また、完全にWindowsのやり方(C:\g4\…)でもない、 両者が混ざった方法
C:/g4/…
であることに注意する。
そのように書かないと、 CygwinVC7か どちらかの体系でひっかかる。
 これとは対照的に、 環境変数PATHは完全にCygwinの記述法だし、 変数INCLUDELIBは完全にWindowsの記述法 なのは興味深い。
 geant4-setup.shvsvars7.sh${G4INSTALL}/sourceディレクトリへコピーする。
 あとは、マニュアルどおり そのディレクトリへcdして、 とすればよろしい。 (但し、ログを残そうとして、 「. vsvars7.sh >> log.txt」とか 「. vsvars7.sh | tee -a log.txt」とかやると、 うまく環境変数が設定されずに失敗した。) ほぼ3時間かかって、 ${G4INSTALL}/lib/WIN32-VC7ディレクトリに 186ファイル(主にlibG4*.alibG4*.pdb) 428MBが生成された。 (2004.01.20)

Index


Home
--
Written by Fut.