未定义的引用`TRandom3 :: Rndm(int)`和`_gfortran _...`符号

时间:2015-08-06 15:41:09

标签: c++ linux linker fortran root-framework

我正在尝试编译一个示例程序,以了解garfield ++的工作原理(我想用它来模拟漂移管)。 我刚刚安装了garfield ++并且我已经下载了本页底部的示例程序http://garfieldpp.web.cern.ch/garfieldpp/examples/tube/然后我已经完成了make命令但是我收到了以下错误:

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"

其中riferimento non definitoundefined reference to的意大利语。我无法理解这个问题,因为在Makefile中有一个指向gfortran的链接。 如果我这样做:

roberto@roberto-HP-Pavilion-dv6-Notebook-PC:~$ root-config --glibs
-L/usr/lib/x86_64-linux-gnu -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic

0 个答案:

没有答案