'неопределенная ссылка на `shogun::SGRefObject::unref()' при компиляции с объектом.so
Я получаю эту ошибку, когда пытаюсь скомпилировать гауссовский тест ядра, приведенный на странице разработчика сёгуна по адресу
https://github.com/shogun-toolbox/shogun/wiki/README_developer.
Я следовал инструкциям, данным для .so
Библиотека сёгунов по адресу https://github.com/shogun-toolbox/shogun/wiki/INSTALL.
Затем я перешел в каталог, в котором находится библиотека общих объектов, и выдал приказ "g++ GTest.cpp shogun/libshogun.so -o a.out"
и была дана ошибка, которая является темой этого поста.
Я пробежал через нить, связанную в сети (ограничение 2 ссылки), но не смог найти решение.
У кого-нибудь есть идеи, как это решить?
1 ответ
Вы не должны пытаться связать напрямую разделяемую библиотеку с вашим примером. Скажем, вы создали пример файла на основе сёгуна, давайте назовём его shogun_example.cpp
, чтобы скомпилировать это, вы должны запустить:
g++ shogun_example.cpp -o shogun_example -lshogun
это на тот случай, если libshogun.so
находится в пути поиска компоновщика.
Если скомпилировано libshogun.so
не находится в пути поиска, то вы должны предоставить компилятору расположение общей библиотеки -L
, например:
g++ shogun_example.cpp -o shogun_example -L<path to the shogun shard lib> -lshogun