我正在尝试在C中使用VLFeat库,如网站上所示 http://www.vlfeat.org/gcc.html
我下载并安装了库。我使用glnxa64
架构。该图书馆位于/A/B/C/vlfeat-0.9.18
我的代码如下:
extern "C" {
#include <vl/generic.h>
#include <vl/sift.h>
}
int main (int argc, const char * argv[])
{
VL_PRINT ("Hello world!") ;
return 0;
}
我使用以下语句
编译我的代码g++ main.cpp -o vlfeat-test -I/A/B/C/vlfeat-0.9.18 -L/A/B/C/vlfeat-0.9.18/bin/glnxa64/ -lvl
但是当我运行它时,我收到以下错误
./vlfeat-test: error while loading shared libraries: libvl.so: cannot open shared object file: No such file or directory
答案 0 :(得分:2)
加载程序时,linux会加载必要的库。
您需要在/ usr / lib /中创建一个符号链接到您的libvl.so文件
sudo ln -s /home/[YourPATH]/vlfeat-0.9.20/bin/[YourArchitecture]/libvl.so /usr/lib/libvl.so
答案 1 :(得分:1)
在运行测试之前,在同一个控制台中:
export LD_LIBRARY_PATH=/A/B/C/vlfeat-0.9.18/bin/glnxa64:$LD_LIBRARY_PATH
然后
./vlfeat-test
答案 2 :(得分:1)
我认为问题出在程序加载时。 Linux并不知道你的vl库在哪里。
将libvl.so复制到/ usr / lib
sudo cp [VLFEAT_PATH]/bin/[YOUR_ARCHITECTURE]/libvl.so /usr/lib
答案 3 :(得分:0)
[这在Ubuntu中通过MATLAB使用.mex文件时遇到了同样的问题]。
您可能需要运行
来更新链接并缓存到最近的共享库sudo ldconfig
您可以永久添加库路径/A/B/C/vlfeat-0.9.18/bin/glnxa64
或自定义目录以及(链接到)共享库,例如/home/username/lib
文件中的ldconfig
:
sudo vim /etc/ld.so.conf
添加行
/A/B/C/vlfeat-0.9.18/bin/glnxa64
通过运行验证
ldconfig -v | grep libvl.so