由于ubuntu的库链接机制,未定义引用 我的C++数据分析程序在OpenSSUE上工作很好。但当我在运行Ubuntu12.04的笔记本电脑上使用它时。它显示以下错误: ent$ make g++ -g -o FBBA FBBA.o libFBBAnal.so -L../FBRun libFBRun.so\ -L/usr/local/root/lib -lRint -L/usr/local/root/lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -m64 -L/usr/local/root/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -lGpad -lHist -lGraf -lGraf3d -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lRIO -lNet -lThread -lCore -lCint -pthread -lm -ldl -rdynamic -lTMVA -lMinuit -lXMLIO -lMLP -lTreePlayer -L/usr/lib64/ -lstdc++ libFBBAnal.so: undefined reference to `TCanvas::TCanvas(char const*, char const*, int, int, int, int)' collect2: ld returned 1 exit status make: *** [FBBA] Error 1er code here

由于ubuntu的库链接机制,未定义引用 我的C++数据分析程序在OpenSSUE上工作很好。但当我在运行Ubuntu12.04的笔记本电脑上使用它时。它显示以下错误: ent$ make g++ -g -o FBBA FBBA.o libFBBAnal.so -L../FBRun libFBRun.so\ -L/usr/local/root/lib -lRint -L/usr/local/root/lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -m64 -L/usr/local/root/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -lGpad -lHist -lGraf -lGraf3d -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lRIO -lNet -lThread -lCore -lCint -pthread -lm -ldl -rdynamic -lTMVA -lMinuit -lXMLIO -lMLP -lTreePlayer -L/usr/lib64/ -lstdc++ libFBBAnal.so: undefined reference to `TCanvas::TCanvas(char const*, char const*, int, int, int, int)' collect2: ld returned 1 exit status make: *** [FBBA] Error 1er code here,c++,ubuntu,C++,Ubuntu,我在internet上的研究表明,可以通过在模块之前更改命令行中库的顺序来解决这一问题。但我有一个Makefile,其中显示了所有这些命令。我不擅长编码。救命啊 我解决了这个问题,这是Ubuntu的库链接问题,正如预期的那样。我不得不手动将库放在出现错误的行的末尾 您通常不会链接到*.s文件,因此在链接时,这些文件通常相当于Windows*.dll文件。这些通常在运行时加载。您可以链接到*.lib或有时链接到*.a,其中包含*.so中包含的函数的存根。或者在运行时完全链接它。所以更改生成文件。@

我在internet上的研究表明,可以通过在模块之前更改命令行中库的顺序来解决这一问题。但我有一个Makefile,其中显示了所有这些命令。我不擅长编码。救命啊

我解决了这个问题,这是Ubuntu的库链接问题,正如预期的那样。我不得不手动将库放在出现错误的行的末尾

您通常不会链接到*.s文件,因此在链接时,这些文件通常相当于Windows*.dll文件。这些通常在运行时加载。您可以链接到*.lib或有时链接到*.a,其中包含*.so中包含的函数的存根。或者在运行时完全链接它。所以更改生成文件。@PeterT我不是在使用windows,我是在使用Ubuntu。和用户31。。。如果我知道如何更改Makefile,我就不会在这里问了!