无效的 mex 文件,libarmadillo,无法打开共享对象文件
Invalid mex-file, libarmadillo, cannot open shared object file
我知道有很多关于该主题的帖子,这可能是重复的,但我不这么认为。我的配置是:Matlab R2014b, clang 3.4, Ubuntu 14.04, armadillo-4.600.4.
我有一个 Armadillo 的本地安装(不是系统方面的,所以 including/linking 手动安装)在 Matlab 之外时工作正常。
我正在尝试使用来自 Matlab 的 Armadillo 运行 一个 Mex 文件。它使用命令编译得很好(简称为 t运行):
mex -compatibleArrayDims -outdir +mx -L/home/john/.local/arma/lib -larmadillo -I/home/john/.local/arma/include test_arma.cpp
问题是当我尝试 运行 时出现此错误:
Error using mx.test_arma
Invalid MEX-file '/path/to/+mx/test_arma.mexa64': libarmadillo.so.4: cannot open shared object file: No such file or directory
从启动 Matlab 的 shell 回显的环境变量 LD_LIBRARY_PATH
包含 /home/john/.local/arma/lib
(其中 libarmadillo.so
是),我还在 Matlab 中使用手动添加了此路径setenv('LD_LIBRARY_PATH',...)
。有什么我想念的吗?
所以我找到了如何 运行 它。现在是段错误:/ 而且我非常有信心这不是代码本身,因为我可以在 Matlab 之外编译和 运行 完全相同的代码。我会尝试找出问题所在,如果相关,我稍后会 post 我的冒险经历。
针对运行ning问题;似乎 Matlab 使用变量 LD_RUN_PATH
在 运行 时间加载共享库。使用 setenv
将我的路径 ... /.local/arma/lib
附加到 LD_RUN_PATH
在我的案例中达到了目的。为你的comments/answers喝彩!
更新: 我终于解决了这个问题,问题是由于预期的字长不匹配(32/64 位,即 int32_t
与 int64_t
) 在 Matlab 的 BLAS/LAPACK 库和犰狳的调用之间。我 posted .
有两个解决方案
我知道有很多关于该主题的帖子,这可能是重复的,但我不这么认为。我的配置是:Matlab R2014b, clang 3.4, Ubuntu 14.04, armadillo-4.600.4.
我有一个 Armadillo 的本地安装(不是系统方面的,所以 including/linking 手动安装)在 Matlab 之外时工作正常。 我正在尝试使用来自 Matlab 的 Armadillo 运行 一个 Mex 文件。它使用命令编译得很好(简称为 t运行):
mex -compatibleArrayDims -outdir +mx -L/home/john/.local/arma/lib -larmadillo -I/home/john/.local/arma/include test_arma.cpp
问题是当我尝试 运行 时出现此错误:
Error using mx.test_arma
Invalid MEX-file '/path/to/+mx/test_arma.mexa64': libarmadillo.so.4: cannot open shared object file: No such file or directory
从启动 Matlab 的 shell 回显的环境变量 LD_LIBRARY_PATH
包含 /home/john/.local/arma/lib
(其中 libarmadillo.so
是),我还在 Matlab 中使用手动添加了此路径setenv('LD_LIBRARY_PATH',...)
。有什么我想念的吗?
所以我找到了如何 运行 它。现在是段错误:/ 而且我非常有信心这不是代码本身,因为我可以在 Matlab 之外编译和 运行 完全相同的代码。我会尝试找出问题所在,如果相关,我稍后会 post 我的冒险经历。
针对运行ning问题;似乎 Matlab 使用变量 LD_RUN_PATH
在 运行 时间加载共享库。使用 setenv
将我的路径 ... /.local/arma/lib
附加到 LD_RUN_PATH
在我的案例中达到了目的。为你的comments/answers喝彩!
更新: 我终于解决了这个问题,问题是由于预期的字长不匹配(32/64 位,即 int32_t
与 int64_t
) 在 Matlab 的 BLAS/LAPACK 库和犰狳的调用之间。我 posted