0

我正在尝试编译这个包并不断得到一个未定义的错误引用。我复制并编辑了 makefile 中的最终编译器代码,以确保在调用其他库之前调用所需的外部库。

这是错误,

<path>/libqroot.so: undefined reference to `TLatex::TLatex()'

TLatex.h在 中<path>/ROOT/includeTLatex在库 Graf( libGraf.so) 中定义并且在<path>/ROOT/lib

这是命令,

g++ file.cxx -Wall -g  -ggdb -fPIC -pthread -m64
-I<root-path>/ROOT/include 
-I/usr/include 
-I./ 
-I/usr/include 
-I<root-path>/ROOT/include 
-I<project-path>/pkg/base/ 
-I<project-path>/pkg/dianaglobal/ 
-I<project-path>/pkg/globalrw/ 
-I<project-path>/pkg//coretools/ 
-L<project-path>/lib 
-L<root-path>/ROOT/lib 
-lqroot -lcoretools -lmathtools -lbase -lgsl -lgslcblas-lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -lGeom -lMinuit -lSpectrum -lMathMore -lMathCore -lThread -lRootAuth -lFoam
-o <project-path>/bin//file

显然没有换行符。

请帮我弄清楚出了什么问题。

谢谢你。

4

1 回答 1

1

首先确保-lGraf传入,如果符号在 libGraf.so 中。链接线的顺序很重要。对于 g++,包含函数定义的库应该出现在使用它的任何源文件或目标文件之后。因此,鉴于您看到的错误:

-lqroot -lGraf -lcoretools -lmathtools -lbase -lgsl -lgslcblas

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options

在您编辑之后,如果您的头文件与您的库不匹配,则会发生此错误。

于 2013-08-05T06:56:16.627 回答