Я получаю эту ошибку, когда пытаюсь скомпилировать тест ядра Гаусса, указанный на странице разработчика shogun по адресу
https://github.com/shogun-toolbox/shogun/wiki/README_developer.
Я следовал инструкциям по созданию библиотеки .so
shogun по адресу https://github.com/shogun-toolbox/shogun/wiki/INSTALL.
Затем я пошел в каталог выше, чем тот, который содержит общую библиотеку объектов, и выдал заказ "g++ GTest.cpp shogun/libshogun.so -o a.out"
, и мне была выдана ошибка, которая является темой этого поста. не могу найти данное решение.
Кто-нибудь знает, как это решить?
'неопределенная ссылка на `shogun::SGRefObject::unref()' при компиляции с объектом .so
Ответы (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
person
Viktor
schedule
24.07.2016
К сожалению, это не сработало. Я использую инструкцию g++ -std=c++11 -DHAVE_EIGEN3 classifier_gaussian_process_binary_classification.cpp -o classgp -lshogun в попытке скомпилировать пример в папке с примерами и получаю белье, оставшееся от неопределенных ссылок. Я установил каждую переменную поиска включения g++ в папку /usr/local/include, в которой shogun сохранил свою папку включения после установки. Я также установил переменную LD_LIBRARY_PATH, чтобы сёгун мог найти общую библиотеку. Я могу скомпилировать другие примеры, и я установил eigen 3 с помощью apt-get.
- person ConfusedGrammer; 07.09.2016
Решил проблему. Оказывается, OpenCL является зависимостью, и я упустил это из виду, потому что не читал текст, когда устанавливал общую библиотеку с помощью cmake. Урок здесь состоит в том, чтобы читать инструкции cmake во время установки, независимо от того, насколько простые инструкции на сайте делают установку лол. Спасибо, что терпишь меня.
- person ConfusedGrammer; 09.09.2016