我尝试在我自己的项目中使用VLFEAT。按照主页提供的说明,我还有一个问题。
首先,我使用g++ 'make =glnx86 86‘编译这个库,然后我使用一个小程序来检查它是否正确编译。
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/ -lvlVLROOT是我计算机中vlfeat路径的缩写。
失败了!!错误信息是:
/usr/bin/ld: cannot find -lvl我知道-l标志用于告诉g++应该链接哪个静态库。在这种情况下,似乎需要“libvl.a”。但是,我检查vlfeat,它没有“libvl.a”。只有动态库'libvl.so‘被找到。
vlfeat本身不提供静态库吗?以及如何修复此错误,以便我可以在自己的项目中使用它?
发布于 2015-03-29 11:31:31
需要使用'$'符号才能正确使用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)。
https://stackoverflow.com/questions/29327334
复制相似问题