使用compile vlfeat库时找不到-lvl

时间:2015-03-29 08:59:43

标签: c++ 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 ++应该链接哪个静态库。在这种情况下,似乎&#39; libvl.a&#39;需要。但是,我检查了vlfeat,它没有&#39; libvl.a&#39;。只有动态lib&#39; libvl.so&#39;找到了。

vlfeat本身是否提供静态库?以及如何修复此错误以便我可以在我自己的项目中使用它?

1 个答案:

答案 0 :(得分:0)

您需要使用'$'符号来正确使用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并运行{{1}}以刷新缓存。

有关详细信息,请参阅dlopen(3)