如何告诉mex链接到/ usr / lib中的libstdc ++so.6而不是MATLAB目录中的libstdc ++so.6?

问题描述

您需要创建一个指向gcc 4.7库的符号链接,以便matlab知道要使用它。就像是:

ln -s {/path/to/file-name} {link-name}

如果您不想使用符号链接,则只需在启动matlab的终端中定义此路径:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libstdc++.so.6
./matlab

解决方法

现在,MATLAB 2012a中的mex仅正式支持gcc 4.4.6,但我要自担风险使用gcc 4.7。现在,如果我直接用mex编译东西,它将抱怨

/usr/lib/gcc/i686-linux-gnu/4.7/cc1plus:
/usr/local/MATLAB/R2012a/sys/os/glnx86/libstdc++.so.6:
version `GLIBCXX_3.4.15' not found
(required by /usr/lib/i386-linux-gnu/libppl_c.so.4)

/usr/lib/gcc/i686-linux-gnu/4.7/cc1plus:
/usr/local/MATLAB/R2012a/sys/os/glnx86/libstdc++.so.6:
version `GLIBCXX_3.4.15' not found
(required by /usr/lib/i386-linux-gnu/libppl.so.9)

通过strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep 'GLIBCXX'我确认它libstdc++.so.6具有该版本字符串。我审查mexopts.sh和修改变量$RPATH,并$MLIBS在该脚本,但它不工作。因此,如果我不使用符号链接,那么在哪里可以配置libstdc++.so.6mex使用的路径?谢谢。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...