4

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

4 回答 4

2

当你的程序被加载时,linux 会加载必要的库。

您需要在 /usr/lib/ 中创建指向 libvl.so 文件的符号链接

sudo ln -s /home/[YourPATH]/vlfeat-0.9.20/bin/[YourArchitecture]/libvl.so /usr/lib/libvl.so
于 2015-06-10T14:30:09.850 回答
1

在运行测试之前,在同一个控制台中:

export LD_LIBRARY_PATH=/A/B/C/vlfeat-0.9.18/bin/glnxa64:$LD_LIBRARY_PATH

然后

./vlfeat-test
于 2014-04-25T12:35:17.910 回答
1

我认为问题在于您的程序加载时。Linux 不知道你的 vl 库在哪里。

将 libvl.so 复制到 /usr/lib

sudo cp [VLFEAT_PATH]/bin/[YOUR_ARCHITECTURE]/libvl.so /usr/lib
于 2015-04-27T07:58:15.390 回答
0

[在 Ubuntu 中通过 MATLAB 使用 .mex 文件时,这适用于同样的问题]。

您可能需要通过运行更新链接和缓存到最近的共享库

sudo ldconfig

您可以将库路径/A/B/C/vlfeat-0.9.18/bin/glnxa64或自定义目录与您的(链接到)共享库一起永久添加,例如,/home/username/libldconfig文件中:

sudo vim /etc/ld.so.conf

添加行

/A/B/C/vlfeat-0.9.18/bin/glnxa64

通过运行验证

ldconfig -v | grep libvl.so
于 2015-02-19T02:18:49.970 回答