【问题标题】:"loading shared libraries" error using VLFeat in C在 C 中使用 VLFeat 的“加载共享库”错误
【发布时间】:2014-05-18 05:11:02
【问题描述】:

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

【问题讨论】:

标签: c vlfeat


【解决方案1】:

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

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

然后

./vlfeat-test

【讨论】:

    【解决方案2】:

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

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

    sudo ldconfig
    

    您可以在ldconfig 文件中永久添加库路径/A/B/C/vlfeat-0.9.18/bin/glnxa64 或带有您(指向)共享库的自定义目录,例如/home/username/lib

    sudo vim /etc/ld.so.conf
    

    添加行

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

    运行验证

    ldconfig -v | grep libvl.so
    

    【讨论】:

      【解决方案3】:

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

      将 libvl.so 复制到 /usr/lib

      sudo cp [VLFEAT_PATH]/bin/[YOUR_ARCHITECTURE]/libvl.so /usr/lib
      

      【讨论】:

        【解决方案4】:

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

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

        sudo ln -s /home/[YourPATH]/vlfeat-0.9.20/bin/[YourArchitecture]/libvl.so /usr/lib/libvl.so
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-24
          • 1970-01-01
          • 2019-02-10
          • 2014-03-04
          • 1970-01-01
          • 1970-01-01
          • 2010-12-15
          • 1970-01-01
          相关资源
          最近更新 更多