I’m trying to compile an example program to understand how garfield++ works (that I want to use to simulate a drift tube). I’ve just installed garfield++ and I’ve downloaded the example program at the bottom of this page garfieldpp.web.cern.ch/garfieldpp/examples/tube/ then I’ve done the “make” command but I’ve received the following errors:
roberto@roberto-HP-Pavilion-dv6-Notebook-PC:~/Scrivania/Garfield$ make
g++ -Wall -Wextra -Wno-long-long `root-config --cflags` -O3 -fno-common -c -I/home/roberto/garfield/Include -I/home/roberto/garfield/Heed gasfile.C
gasfile.C:12:5: warning: unused parameter ‘argc’ [-Wunused-parameter]
int main(int argc, char * argv[]) {
^
gasfile.C:12:5: warning: unused parameter ‘argv’ [-Wunused-parameter]
g++ -o gasfile gasfile.o `root-config --glibs` -lGeom -lgfortran -lm -L/home/roberto/garfield/Library -lGarfield
/home/roberto/garfield/Library/libGarfield.a(Medium.o): nella funzione "Garfield::Medium::GetElectronMomentum(double, double&, double&, double&, int&)":
Medium.cc:(.text+0xf0b4): riferimento non definito a "TRandom3::Rndm(int)"
Medium.cc:(.text+0xf0fb): riferimento non definito a "TRandom3::Rndm(int)"
/home/roberto/garfield/Library/libGarfield.a(Medium.o): nella funzione "Garfield::Medium::GetElectronCollision(double, int&, int&, double&, double&, double&, double&, int&, int&, int&)":
Medium.cc:(.text+0xf1ea): riferimento non definito a "TRandom3::Rndm(int)"
Medium.cc:(.text+0xf231): riferimento non definito a "TRandom3::Rndm(int)"
/home/roberto/garfield/Library/libGarfield.a(MediumMagboltz.o): nella funzione "Garfield::MediumMagboltz::ComputePhotonCollisionTable(bool)":
MediumMagboltz.cc:(.text+0x4cd1): riferimento non definito a "TMath::Voigt(double, double, double, int)"
/home/roberto/garfield/Library/libGarfield.a(MediumMagboltz.o): nella funzione "Garfield::MediumMagboltz::GetPhotonCollisionRate(double const&)":
MediumMagboltz.cc:(.text+0x24913): riferimento non definito a "TMath::Voigt(double, double, double, int)"
/home/roberto/garfield/Library/libGarfield.a(MediumMagboltz.o): nella funzione "Garfield::MediumMagboltz::ComputeDeexcitationInternal(int, int&)":
MediumMagboltz.cc:(.text+0x25319): riferimento non definito a "TRandom3::Rndm(int)"
MediumMagboltz.cc:(.text+0x2533e): riferimento non definito a "TRandom3::Rndm(int)"
MediumMagboltz.cc:(.text+0x25387): riferimento non definito a "TRandom3::Rndm(int)"
MediumMagboltz.cc:(.text+0x255da): riferimento non definito a "TRandom3::Rndm(int)"
MediumMagboltz.cc:(.text+0x256ca): riferimento non definito a "TRandom3::Rndm(int)"
/home/roberto/garfield/Library/libGarfield.a(MediumMagboltz.o):MediumMagboltz.cc:(.text+0x25746): seguono ulteriori riferimenti non definiti a "TRandom3::Rndm(int)"
/home/roberto/garfield/Library/libGarfield.a(MediumMagboltz.o): nella funzione "Garfield::MediumMagboltz::GetPhotonCollision(double, int&, int&, double&, double&, int&, double&)":
MediumMagboltz.cc:(.text+0x26fa8): riferimento non definito a "TMath::Voigt(double, double, double, int)"
MediumMagboltz.cc:(.text+0x2703d): riferimento non definito a "TRandom3::Rndm(int)"
MediumMagboltz.cc:(.text+0x270ef): riferimento non definito a "TRandom3::Rndm(int)"
MediumMagboltz.cc:(.text+0x2730d): riferimento non definito a "TRandom3::Rndm(int)"
/home/roberto/garfield/Library/libGarfield.a(RandomEngineRoot.o): nella funzione "Garfield::RandomEngineRoot::RandomEngineRoot()":
RandomEngineRoot.cc:(.text+0x2c): riferimento non definito a "TRandom3::TRandom3(unsigned int)"
RandomEngineRoot.cc:(.text+0xbe): riferimento non definito a "TRandom3::~TRandom3()"
/home/roberto/garfield/Library/libGarfield.a(RandomEngineRoot.o): nella funzione "Garfield::RandomEngineRoot::~RandomEngineRoot()":
RandomEngineRoot.cc:(.text+0xf6): riferimento non definito a "TRandom3::~TRandom3()"
/home/roberto/garfield/Library/libGarfield.a(RandomEngineRoot.o): nella funzione "Garfield::RandomEngineRoot::Seed(unsigned int)":
RandomEngineRoot.cc:(.text+0x175): riferimento non definito a "TRandom3::SetSeed(unsigned int)"
/home/roberto/garfield/Library/libGarfield.a(RandomEngineRoot.o): nella funzione "Garfield::RandomEngineRoot::Draw()":
RandomEngineRoot.cc:(.text._ZN8Garfield16RandomEngineRoot4DrawEv[_ZN8Garfield16RandomEngineRoot4DrawEv]+0x12): riferimento non definito a "TRandom3::Rndm(int)"
/home/roberto/garfield/Library/libGarfield.a(magboltz.o): nella funzione "master.0.rm48_":
magboltz-9.01.f:(.text+0x29f): riferimento non definito a "_gfortran_st_write"
magboltz-9.01.f:(.text+0x2b3): riferimento non definito a "_gfortran_transfer_character_write"
magboltz-9.01.f:(.text+0x2c7): riferimento non definito a "_gfortran_transfer_integer_write"
magboltz-9.01.f:(.text+0x2db): riferimento non definito a "_gfortran_transfer_integer_write"
magboltz-9.01.f:(.text+0x2ef): riferimento non definito a "_gfortran_transfer_integer_write"
Where “riferimento non definito” is the Italian for “undefined reference to”. I can’t understand the problem because in the Makefile there is a link to gfortran and to the root’s libraries.