0

このパッケージをコンパイルしようとしていますが、エラーへの未定義の参照が引き続き発生します。必要な外部ライブラリが他のライブラリよりも前に呼び出されるように、メイクファイルの最終的なコンパイラ コードをコピーして編集しました。

これがエラーです。

<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 に答える