如何告诉 mex 链接/usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的那个? [英] How to tell mex to link with the libstdc++.so.6 in /usr/lib instead of the one in the MATLAB directory?
问题描述
现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4.4.6,但我想自行承担使用 gcc 4.7 的风险.现在如果我直接用mex编译一些东西,它会抱怨
Now mex in MATLAB 2012a only officially supports gcc 4.4.6 but I want to use gcc 4.7 at my own risk. Now If I compile something with mex directly, it will complain that
/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)
通过 字符串/usr/lib/i386-linux-gnu/libstdc++.so.6 |grep 'GLIBCXX'
我确认这个 libstdc++.so.6
有那个版本字符串.我查看了 mexopts.sh
并修改了该脚本中的变量 $RPATH
和 $MLIBS
,但它不起作用.因此,如果我不使用符号链接,我在哪里可以配置 mex 使用的 libstdc++.so.6
的路径?谢谢.
By strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep 'GLIBCXX'
I confirm that this libstdc++.so.6
has that version string. I reviewed mexopts.sh
and modified the variable $RPATH
and $MLIBS
in that script, but it doesn't work. So if I don't use symbolic link, where can I config the path of the libstdc++.so.6
that mex uses? Thank you.
推荐答案
您需要创建一个指向 gcc 4.7 库的符号链接,以便 matlab 知道使用它.比如:
You need to create a symbolic link to the gcc 4.7 library so matlab knows to use it. Something like:
ln -s {/path/to/file-name} {link-name}
如果您不想使用符号链接,则只需在启动 matlab 的终端中定义此路径:
If you don't want to use symbolic links, then just define this path in a terminal from which you launch matlab:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libstdc++.so.6
./matlab
这篇关于如何告诉 mex 链接/usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的那个?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!