我正在尝试编译此包并继续获取对错误的未定义引用。我复制并编辑了makefile中的最终编译器代码,以确保在其他库之前调用所需的外部库。
这是错误,
<path>/libqroot.so: undefined reference to `TLatex::TLatex()'
TLatex.h
位于<path>/ROOT/include
,
TLatex
在库格拉夫(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
显然没有新行字符。
请帮我弄清楚是什么问题。
谢谢。
答案 0 :(得分:1)
首先确保传入-lGraf
,如果符号位于libGraf.so中。链接线的顺序很重要。对于g ++,包含函数定义的库应出现在使用它的任何源文件或目标文件之后。因此,鉴于您所看到的错误:
-lqroot -lGraf -lcoretools -lmathtools -lbase -lgsl -lgslcblas
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options
在您编辑之后,如果您的头文件与您的库不匹配,则会发生此错误。