編集メニュー > 新規作成 編集 コピー 名前の変更 凍結 アップロード 添付ファイル一覧 バックアップ

anapaw install

sunday実験のanapawをインストールしてみる。 本体をコンパイルすると expat.hが無いと言われる。expat自体はあるが、ヘッダーファイルとか無いので、

yum install expat-devel

でインストール。 もう一度makelibすると

TArtDecoderTimeStamp.cc: In member function `virtual int  TArtDecoderTimeStamp::Decode(unsigned char*&, const unsigned int&,  TArtMap<TArtMap<int> >&, TArtMapConfig*)':
TArtDecoderTimeStamp.cc:38: error: integer constant is too large for "long"  type
make: *** [TArtDecoderTimeStamp.o] エラー 1
make: ディレクトリ `/home/kondo/exp/sunday/anapaw/src' から出ます
make: ディレクトリ `/home/kondo/exp/sunday/anapaw/src' に入ります
g77 -O0 -fbounds-check -fno-f2c -funroll-loops -D_FILE_OFFSET_BITS=64  -D_LARGEFILE_SOURCE -DBABIRL -c anapaw.f 
g++34 -O0  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DBABIRL  -D__OUTPUT_ROOTFILE__ -pthread -m32 -I/usr/local/src/root/root/include   -c -o  TArtDecoderTimeStamp.o TArtDecoderTimeStamp.cc
TArtDecoderTimeStamp.cc: In member function `virtual int  TArtDecoderTimeStamp::Decode(unsigned char*&, const unsigned int&,  TArtMap<TArtMap<int> >&, TArtMapConfig*)':
TArtDecoderTimeStamp.cc:38: error: integer constant is too large for "long" type
make: *** [TArtDecoderTimeStamp.o] エラー 1
make: ディレクトリ `/home/kondo/exp/sunday/anapaw/src' から出ます

と言われる。タイムスタンプは使っていないので、とりあえずnouseというディレクトリを作って放り込んで、TArtDecoderFactory?.ccの中のTimeStamp?の部分をコメント。んでもう一度makelib。

TPidDataDict.h

でG__ci.hが見つけられないと言われる。

#include "G__ci.h"

#include <G__ci.h>

に変更。OK。

次にmakeanaすると

/usr/bin/ld: cannot find -ltermcap

と言われる。makefileの-ltermcapをなくす。再トライ。

/usr/local/src/root/root/lib/libCint.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >::ignore(int)@GLIBCXX_3.4.5'
/usr/local/src/root/root/lib/libCint.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >::ignore()@GLIBCXX_3.4.5'

と言われる。うーむ、どういうこと?rootを最新版にしてみるか? (現在version5.27/02)

root v5.28.00を入れた後でmakelibすると

TDaliDataDict.cc:193: error: prototype for 'void TDaliData::ShowMembers(TMemberInspector&, char*)' does not match any in class 'TDaliData'
TDaliData.h:39: error: candidate is: virtual void TDaliData::ShowMembers(TMemberInspector&)
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h: In member function 'void TDaliData::ShowMembers(TMemberInspector&, char*)':
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h:25: error: too many arguments to function 'void ROOT::GenericShowMembers(const char*, void*, TMemberInspector&, bool)'
TDaliDataDict.cc:200: error: ファイルのこの位置
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h:25: error: too many arguments to function 'void ROOT::GenericShowMembers(const char*, void*, TMemberInspector&, bool)'
TDaliDataDict.cc:203: error: ファイルのこの位置
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h:25: error: too many arguments to function 'void ROOT::GenericShowMembers(const char*, void*, TMemberInspector&, bool)'
TDaliDataDict.cc:206: error: ファイルのこの位置
TDaliDataDict.cc:208: error: no matching function for call to 'TDaliData::ShowMembers(TMemberInspector&, char*&)'
/usr/local/src/root/root_v5.28.00/include/TObject.h:211: note: candidates are: virtual void TObject::ShowMembers(TMemberInspector&)
make: *** [TDaliDataDict.o] エラー 1
make: ディレクトリ `/home/kondo/exp/sunday/anapaw/src' から出ます
make: ディレクトリ `/home/kondo/exp/sunday/anapaw/src' に入ります
g77 -O0 -fbounds-check -fno-f2c -funroll-loops -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DBABIRL -c anapaw.f
g++ -O0  -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DBABIRL -D__OUTPUT_ROOTFILE__ -pthread -m32 -I/usr/local/src/root/root_v5.28.00/include   -c -o TDaliDataDict.o TDaliDataDict.cc
TDaliDataDict.cc:193: error: prototype for 'void  DaliData::ShowMembers(TMemberInspector&, char*)' does not match any in class 'TDaliData'
TDaliData.h:39: error: candidate is: virtual void  DaliData::ShowMembers(TMemberInspector&)
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h: In member function 'void TDaliData::ShowMembers(TMemberInspector&, char*)':
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h:25: error: too many arguments to function 'void ROOT::GenericShowMembers(const char*, void*, TMemberInspector&, bool)'
TDaliDataDict.cc:200: error: ファイルのこの位置
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h:25: error: too many arguments to function 'void ROOT::GenericShowMembers(const char*, void*, TMemberInspector&, bool)'
TDaliDataDict.cc:203: error: ファイルのこの位置
/usr/local/src/root/root_v5.28.00/include/RtypesImp.h:25: error: too many arguments to function 'void ROOT::GenericShowMembers(const char*, void*, TMemberInspector&, bool)'
TDaliDataDict.cc:206: error: ファイルのこの位置
TDaliDataDict.cc:208: error: no matching function for call to 'TDaliData::ShowMembers(TMemberInspector&, char*&)'
/usr/local/src/root/root_v5.28.00/include/TObject.h:211: note: candidates are: virtual void TObject::ShowMembers(TMemberInspector&)
make: *** [TDaliDataDict.o] エラー 1

と言われる。これはイくんと同じエラー。どうやらrootのバージョンによって引数の数が違う様子。おそらくrootで解析できるように変換する部分だと思われるのでこいつら全部nouseに突っ込む。makelibはできたけど。makeanaでエラー。

/home/kondo/exp/sunday/anapaw/lib/libanalib.a(astop.o): In function `astop_':
astop.f:(.text+0xf3): undefined reference to `close_treefile__'
/home/kondo/exp/sunday/anapaw/lib/libanalib.a(anaact.o): In function `anaact_':
anaact.f:(.text+0x3070): undefined reference to `open_treefile__'
anaact.f:(.text+0x30c4): undefined reference to `close_treefile__'
/home/kondo/exp/sunday/anapaw/lib/libanalib.a(anasub.o): In function `evtloop_':
anasub.f:(.text+0xaea7): undefined reference to `add_event2tree__'
/home/kondo/exp/sunday/anapaw/lib/libanalib.a(anabatch.o): In function `batchloop_':
anabatch.f:(.text+0x7e): undefined reference to `add_event2tree__'
/usr/local/src/root/root_v5.28.00/lib/libCint.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >::ignore(int)@GLIBCXX_3.4.5'
/usr/local/src/root/root_v5.28.00/lib/libCint.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >::ignore()@GLIBCXX_3.4.5'
collect2: ld はステータス 1 で終了しました
make: *** [anapaw] エラー 1

tree関係の部分を全てコメントアウト。だがstd::...はまだ残る。これは何のせい? 調べてみるとどうやら -lstdc++ というオプションが関係している様子。これはgccでc++のコードをコンパイルするときに使うものらしい。ためしにはずしてみるとコンパイルできました!