last-modified: 2019-04-28 (日) 18:36:58 (1834d)[変更箇所]
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++のコードをコンパイルするときに使うものらしい。ためしにはずしてみるとコンパイルできました!