ソースからの ROOT の作り方
English Page is here.
コンパイル環境
99/03/17 現在の私のコンパイル環境は
- egcs*-1.1.2-1a
- egcs-libg++-2.9.0-1d
- glibc-0.961212-1o
- binutils-2.9.1-19b
です。これしか試していないので、他の環境でうまく行くかどうか
不明です。
オリジナルの在処
ROOT をソースから作るには次のファイルをダウンロードして下さい:
- ftp://root.cern.ch/root/root_v2.21.PPCLinux.2.2.0.egcs.tar.gz
- ftp://root.cern.ch/root/root_v2.00.source.tar.gz
- ftp://root.cern.ch/root/ttf_1.1.tar.gz
1番目のファイルは egcs-1.0x で作られた ROOT のバイナリーパッケージです。
libg++.so.2.8 とリンクされています。DR3 で動くはずなので、
この状況に不満がなければバイナリーの作り直しは不要です。
2番目のファイルが、完全なソースコードのツリーです。ですが、
ソースから作りなおす場合にもバイナリーパッケージが必要です。
TrueType サポートが必要な場合は3番目のファイルも必要です。
また、いくつかパッチをあてる必要もありました。
私家版パッチは
- root_v2.21b7-mklinux.patch
- root_v2.21b7-mklinux_ttf.patch
- root_v2.21b7-x3d_depth.patch
にあります。最初のものは次のファイルにパッチをあてます:
- Makefile.mklinux
- CXXFLAGS に "-fno-rtti -fno-exceptions" を加える(egcs で必要)。
- ROOTX_rootx.cxx
- 閉じていないかっこに閉じかっこを加える。
- UNIX_UnixSystem.cxx
- 閉じていないかっこに閉じかっこを加える。
- socklen_t を size_t におきかえる(MkLinux の glibc*-0.961212 が
完全には glibc-2.x になりきっていないため)。
2番目のパッチは、ttf をリンクするためのものです。
3番目のパッチは、X3D を 16 bpp で使うためのものです。
パッケージ作成手順
まずバイナリーのターボールを展開、次にソースターボール、
パッチあて、make という感じです:
- $ tar -zxvf orig/root_v2.21.PPCLinux.2.2.0.egcs.tar.gz
- $ cd root
- $ tar -zxvf ../orig/root_v2.21.source.tar.gz
- $ tar -zxvf ../orig/ttf_1.1.tar.gz
- $ export ROOTSYS=`pwd`
- $ export LD_LIBRARY_PATH=$ROOTSYS/lib
- $ export PATH=$ROOTSYS/bin:$PATH
- $ cd src
- $ patch -p1 -s < <somewhere>/root_v2.21b7-mklinux.patch
- $ patch -p1 -s < <somewhere>/root_v2.21b7-mklinux_ttf.patch
- $ patch -p1 -s < <somewhere>/root_v2.21b7-x3d_depth.patch
- $ ln -s Makefile.mklinux Makefile
- $ make distclean
- $ ln -s /usr/lib/libttf.so.2.0.0 ../lib
- $ ln -s G__TypeInfo.h ../cint/include/iosenum.h
- $ make OPT='-O4 -g' >& make.log &
- $ tail -f make.log
- $ cd ../tutorials
- $ patch -p1 -s < ../../patches/root_v2.21b7-demos.patch
これで "bin" の中身の一部とと "lib" の中身の全てが更新されます。
勇敢(無謀?)にも、"-O4" でコンパイルしている点に注意。
3番目のパッチは、新しいソース配布がされ次第不要になるはずです。
こうしてできたパッケージが
- root_v2.21b7_egcs111.tar.gz
です。"-g" 付きでコンパイルしましたが、スリム化のためストリップしました。
このパッケージを使うには、egcs-1.1.1 以降の libstdc++ が必要です。
egcs のディレクトリーにあります。
Back to the Top ROOT Page
fujiik@jlcuxf.kek.jp Sep. 3, 1998