运行在Linux上编译的mex文件

18次浏览(过去30天)
Bogdan Cristea Eugen
Bogdan Cristea Eugen 2012年8月30日
评论道: 安tran Lam2014年6月2日
当我从MATLAB运行一个从cpp源文件编译的mex文件时,我得到以下错误:
/home/bogdan/ c++ / it++ /mex/test. txt文件无效。mexa64”:/usr/local/MATLAB/R2012a/bin/glnxa64/libstdc + + .so.6:版本' GLIBCXX_3.4.15'未找到(/usr/local/lib64/libitpp.so.8要求)
解决方案似乎是在MATLAB库文件夹中创建软链接,链接到特定Linux发行版(在我的案例中是openSUSE 12.1 x86_64)提供的这些库的新版本。
我的问题是,这是否是Mathworks推荐的标准解决方案?这种方法是否存在任何问题(是否应该将所有库更新到新版本,因为可能会出现不兼容问题)?
1评论
安tran Lam
安tran Lam 2014年6月2日
我和你有同样的问题。即使我设置了LD_LIBRARY_PATH,它也不能解决问题。有人知道为什么LD_LIBRARY_PATH在Matlab中没有效果吗?

登录评论。

答案(2)

艾特威尔肯
艾特威尔肯 2012年8月30日
在从MATLAB文件夹进行软链接之前,我将首先尝试在MATLAB中取消LD_LIBRARY_PATH的设置
> > setenv (“LD_LIBRARY_PATH”''
至少在理论上,MATLAB有可能崩溃,因为内存中有两个c++库,但这值得一试。告诉我们你的进展。

Bogdan Cristea Eugen
Bogdan Cristea Eugen 2012年8月30日
我不确定你说的软链接是什么意思。我尝试在使用之前和之后运行我的mex文件
setenv (“LD_LIBRARY_PATH”''
但我得到了同样的错误
无效的MEX-file“/ home / bogdan / c++ / + + /墨西哥人/测试。mexa64”:/usr/local/MATLAB/R2012a/bin/glnxa64/libstdc + + .so.6:
版本' GLIBCXX_3.4.15'未找到(/usr/local/lib64/libitpp.so.8要求)
即使在运行setenv()之后,我看到LD_LIBRARY_PATH为空,似乎MATLAB在某种缓存中存储了库路径。
4评论
安tran Lam
安tran Lam 2014年6月2日
即使我设置了LD_LIBRARY_PATH,它也不能解决问题。有人知道为什么LD_LIBRARY_PATH在Matlab中没有效果吗?奇怪的现象是为什么Matlab使用/usr/local/ Matlab / r2012a /bin/glnxa64/libstdc++.so。6第一。而在LD_LIBRARY_PATH中,它应该在第二个。LD_LIBRARY_PATH = / usr /地方/ MATLAB / R2012a / sys / os / glnxa64: / usr /地方/ MATLAB / R2012a / bin / glnxa64

登录评论。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!