Не удается найти -lvl при использовании библиотеки компиляции vlfeat

Я пытаюсь использовать VLFEAT в своем собственном проекте. Следуйте инструкциям, приведенным на его главной странице, у меня еще есть вопрос.

Сначала я компилирую библиотеку, используя g ++ ‘make ARCH = glnx86’. Кажется, все в порядке. А затем я использую небольшую программу, чтобы проверить, правильно ли она скомпилирована.

extern "C" {
#include <vl/generic.h>
}

int main (int argc, const char * argv[]) {
VL_PRINT ("Hello world!") ;
return 0;
}

Я использую следующий скрипт для компиляции:

 $ g++ main.cpp -o vlfeat-test -IVLROOT -LVLROOT/bin/glnx86/ -lvl

VLROOT — это сокращение от пути vlfeat на моем компьютере.

Это не удалось !!
И сообщение об ошибке:

 /usr/bin/ld: cannot find -lvl

Я знаю, что флаг -l используется для указания g ++, какую статическую библиотеку следует связать. В этом случае, кажется, нужен libvl.a. Тем не менее, я проверяю vlfeat, и у него нет ‘libvl.a’. Найдена только динамическая библиотека libvl.so.

Разве vlfeat не предоставляет статическую библиотеку? И как исправить эту ошибку, чтобы я мог использовать ее в своем собственном проекте?

1

Решение

Вам нужно использовать '$' знак, чтобы правильно использовать значение вашего VLROOT переменная:

export VLROOT=/path/to/vlfeat
g++ vl.cpp -o vlfeat-test -I$VLROOT -L$VLROOT/bin/glnx86/ -lvl

Затем, чтобы динамический загрузчик нашел библиотеку, которую вы можете сделать:

export LD_LIBRARY_PATH=$VLROOT/bin/glnx86/
./vlfeat-test

Или альтернативно скопировать libvl.so например, под /usr/local/lib и беги ldconfig обновить кеш.

Увидеть dlopen(3) Больше подробностей.

0

Другие решения


По вопросам рекламы [email protected]