使用编译 vlfeat 库时找不到 -lvl
Can not find -lvl when using compile vlfeat library
我尝试在自己的项目中使用 VLFEAT。按照其主页提供的说明进行操作,我还有一个问题。
首先,我用g++编译库'make ARCH=glnx86'。好像OK.And然后我用一个小程序检查是否正确编译。
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本身不提供静态库吗?以及如何修复此错误以便我可以在自己的项目中使用它?
您需要使用 '$'
符号才能正确使用 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)
。
我尝试在自己的项目中使用 VLFEAT。按照其主页提供的说明进行操作,我还有一个问题。
首先,我用g++编译库'make ARCH=glnx86'。好像OK.And然后我用一个小程序检查是否正确编译。
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本身不提供静态库吗?以及如何修复此错误以便我可以在自己的项目中使用它?
您需要使用 '$'
符号才能正确使用 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)
。