"加载共享库"在C中使用VLFeat时出错

时间:2014-04-05 21:54:55

标签: c vlfeat

我正在尝试在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

4 个答案:

答案 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