неопределенная ссылка из-за механизма связывания библиотек в Ubuntu

0

Моя программа анализа данных (на основе C++) отлично работает на OpenSUSE. Но когда я использую его в своем ноутбуке, работающем под Ubuntu 12.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

Мои исследования в Интернете показывают, что это можно решить, изменив порядок библиотек в командной строке (до модуля). Но у меня есть Makefile, где показаны все эти команды. И я плохо разбираюсь в кодировании. Помоги пожалуйста !

  • 0
    Обычно вы не связываетесь с * .so файлами во время компоновки (они обычно эквивалентны Windows * .dll). Они обычно загружаются во время выполнения. Вы ссылаетесь на * .lib (или иногда * .a), который содержит заглушки функций, которые содержатся в * .so. Или вы связываете это полностью во время выполнения.
  • 0
    Так что поменяй Makefile.
Показать ещё 1 комментарий
Теги:

1 ответ

0

Я решил проблему, это была проблема связывания библиотеки Ubuntu, как и ожидалось. Мне пришлось вручную поместить библиотеки в конец строки, где появилась ошибка. !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню