matlab中下载了机器人库但是找不到link函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中下载了机器人库但是找不到link函数相关的知识,希望对你有一定的参考价值。

MATLAB做机器人仿真,新手入门踩坑第一讲,成功调用link函数
很多时候,我们新接触一个行业,会遇到各种各样的问题,这个坑,那个坑的,整理笔记留给后来新学的人。关于这个MATLAB中的link函数问题,我查了很多文档,也没有找到合适的解释,摸索了一个下午,终于解决了,就给大家做个共享吧。

matlab强化学习工具箱显示下载了找不到是cpu的问题。解决办法如下:1、右击我的电脑,选择属性。2、在"高级"选项卡中
参考技术A 可能没有安装对应函数所在的工具箱,或者调用函数路径没添加到系统路径去,导致系统找不到函数对应的文件

MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库

【中文标题】MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库【英文标题】:MATLAB + Mex + OpenCV: Links and compiles correctly but can't find library at run time 【发布时间】:2013-07-15 05:35:17 【问题描述】:

我有一个mex 函数,它使用了我正在尝试使用的OpenCV。编译似乎可以工作,但是当我尝试在 MATLAB 中调用该函数时,我收到此错误:

Invalid MEX-file '/path/to/project/mexfunction.mexa64': libopencv_legacy.so.2.4: cannot open shared object file: No such file or directory

我的OpenCV 2.4.5 安装位于/nwdata/username/(我使用他们文档中的 OpenCV 推荐设置从头开始编译自己)。我使用这个函数用 mex 编译:

function cvmex(mexfile)
    OCV_INC_DIR='/nwdata/username/include/opencv';·
    OCV2_INC_DIR='/nwdata/username/include';·
    OCV_LIB_DIR ='/nwdata/username/lib';·

    mex(mexfile,'-g','-v',['-I',OCV2_INC_DIR],['-I',OCV_INC_DIR],['-L',OCV_LIB_DIR],'DUSE_DOUBLE',...
    '-lopencv_legacy','-lopencv_imgproc','-lopencv_core','-lopencv_contrib','-lopencv_ml',...
    '-lopencv_objdetect','-lopencv_calib3d','-lopencv_flann','-lopencv_features2d',...
    '-lopencv_video','-lopencv_gpu');
end

当我编译时,我没有收到任何错误。然后我检查了库的依赖项使用ldd mexfunction.mexa64。这是相关的行:

libopencv_legacy.so.2.4 => /nwdata/username/lib/libopencv_legacy.so.2.4 (0x00002ad6a2123000)

好的,看起来没问题。该文件肯定存在:

[username@machine:/nwdata/username/lib]
$ ls -l libopencv_legacy*
lrwxrwxrwx 1 username REDACTED      25 Jul 15 15:07 libopencv_legacy.so -> libopencv_legacy.so.2.4.5
lrwxrwxrwx 1 username REDACTED      25 Jul 15 15:07 libopencv_legacy.so.2.4 -> libopencv_legacy.so.2.4.5
-rwxr-xr-x 1 username REDACTED 1303944 Jun 17 15:37 libopencv_legacy.so.2.4.5


[username@machine:/nwdata/username/lib]
$ file libopencv_legacy.so*
libopencv_legacy.so:       symbolic link to `libopencv_legacy.so.2.4.5'
libopencv_legacy.so.2.4:   symbolic link to `libopencv_legacy.so.2.4.5'
libopencv_legacy.so.2.4.5: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

在 Linux 上运行:

Linux machine@redacted 2.6.43.8-1.fc15.x86_64 #1 SMP Mon Jun 4 20:33:44 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

MATLAB R2011b, and g++ 4.6.3.

这看起来很奇怪。有任何想法吗?这台机器是集群的一部分,所以我没有 root 访问权限或任何东西。

【问题讨论】:

检查路径和 LD_LIBRARY_PATH 环境 该目录不在我的 shell 或 MATLAB 路径上。这是 LD_LIBRARY_PATH:>> getenv('LD_LIBRARY_PATH')ans = /usr/local/matlab2011b/sys/os/glnxa64:/usr/local/matlab2011b/bin/glnxa64:/usr/local/matlab2011b/extern/lib/glnxa64:/usr/local/matlab2011b/runtime/glnxa64:/usr/local/matlab2011b/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/usr/local/matlab2011b/sys/java/jre/glnxa64/jre/lib/amd64/server:/usr/local/matlab2011b/sys/java/jre/glnxa64/jre/lib/amd64 你能把它添加到ld lib路径吗? 我这样做了:p = getenv('LD_LIBRARY_PATH'); p=[p,':/nwdata/username/lib']; setenv('LD_LIBRARY_PATH',p); 再次检查它,它是路径上的最后一项。同样的事情,即使重新编译后仍然无法正常工作。还做了一个addpath('/nwdata/username/lib'),还是不行。 您也可以通过调用LD_PRELOAD=/path/to/lib.so matlab 来使用LD_PRELOAD 来启动MATLAB。无关:查看mexopencv 项目 【参考方案1】:

几天前我遇到了类似的问题。仅当您在集群上远程使用 matlab 时才会出现此问题。在 Matlab 中编辑 LD_LIBRARY_FILE 是没用的,我也不知道为什么。我通过在 .bashrc(或 .bash_profile)中定义 LD_LIBRARY_PATH 解决了这个问题。

【讨论】:

【参考方案2】:

我遇到了一个非常相似的问题,并通过在 Matlab 二进制目录中添加一个指向缺失库的软链接来解决它,在我的情况下,所有其他库都位于该目录中:

sudo ln -s /users/marc/lib/libName.so /opt/matlab/MATLAB_R2014b_Linux_x86-64/bin/glnxa64/libName.so

解决了问题。

【讨论】:

以上是关于matlab中下载了机器人库但是找不到link函数的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse中的JNI Unsatisfied Link错误找不到依赖库

Link Binary With Libraries中添加的时候 也找不到libz.dylib 库

matlab中找不到step函数

注册为 Git 根目录,但在那里找不到 Git 存储库

MATLAB7.0安装后,启动弹出找不到指定的模块

matlab踩坑 自带surf 函数找不了 surf 作为函数执行