无效的mex文件,libarmadillo,无法打开共享对象文件

时间:2015-02-09 10:59:17

标签: matlab shared-libraries mex armadillo

我知道有很多关于这个主题的帖子,这可能是重复的,但我不这么认为。我的配置是:Matlab R2014b,clang 3.4,Ubuntu 14.04,armadillo-4.600.4。

我有一个本地安装(不是系统方面,因此包括/手动链接)Armadillo在Matlab之外工作正常。 我试图使用Matlab的Armadillo运行Mex文件。它使用命令编译好(简称截断):

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是),我还使用setenv('LD_LIBRARY_PATH',...)在Matlab中手动添加了此路径。我有什么遗失的吗?

1 个答案:

答案 0 :(得分:1)

所以我发现了如何运行它。现在它是segfaulting:/我相当自信它不是代码本身,因为我可以在Matlab之外编译和运行完全相同的代码。我会试着找出什么是错的,如果它是相关的,我会在稍后发布我的冒险经历。

正在运行问题;似乎Matlab使用变量LD_RUN_PATH在运行时加载共享库。在我的案例中,使用... /.local/arma/lib将我的路径LD_RUN_PATH添加到setenv。为您的意见/答案干杯!

更新:我终于解决了这个问题,问题是由于Matlab之间的字大小不匹配(32/64位,即int32_tint64_t) BLAS / LAPACK库和Armadillo的电话。我发布了两个解决方案here