当前位置: 首页 > 面试题库 >

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

杜阳泽
2023-03-14
问题内容

现在,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使用的路径?谢谢。


问题答案:

您需要创建一个指向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


 类似资料:
  • 问题内容: 我最近寻求帮助,它被拒绝投票并关闭(我不知道为什么) 事实证明,“ make install”-安装的make目标并暗示目标“ install-target-libstdc ++v3”实际上并不意味着您已准备就绪。 我一直想知道自己在做什么错了,因为我以为这样的make target可以帮到我。 我希望这个答案至少可以帮助其他人。 问题答案: 对于所有遇到类似问题的人,请运行以下命令:

  • 问题内容: 我正在开发一个嵌入式项目,该项目当前在Linux和uClibc中使用C。我们有兴趣将其移至C ,但我不希望与libstdc 中的链接相关的开销。我的印象是,只要我们不使用STL中的任何内容(例如iostream或vector),就可以实现此目的。 如何在不链接libstdc 的情况下引导g 进行编译? 问题答案: 编译时,仅用于编译。然后,使用代替进行链接。但是,这将直接调用链接器,这

  • 问题内容: 安装新的构建机器后,我发现它带有标准C ++库的6.0.10 但是,我们的许多目标计算机仍使用旧版本的libstdc ++,例如: 显然,在最后两个0.0.1中,ABI发生了变化,因为尝试运行程序会导致 我尝试明确安装旧版本的gcc,但没有帮助。升级目标计算机是我无法控制的,因此不是一种选择。使我的构建在具有较旧libstdc ++的计算机上工作的最佳方法是什么? 我在apt-cach

  • 问题内容: 我在运行64位Ubuntu 12.04的桌面上下载并构建了gcc 4.8.1。我像文档建议一样使用命令从源代码中构建它 它似乎通过了所有测试,我将所有内容都安装到了带有后缀-4.8的主目录中,以区别于版本4.6.3的系统gcc。 不幸的是,当我使用g -4.8编译c 程序时,它链接到系统libc和libstdc ,而不是从gcc-4.8.1编译的较新的程序。我下载并构建了gcc 4.8

  • 问题内容: 为了进行测试,我从零开始创建了一个新项目,将所有参数保留为默认值(我没有进行任何代码更改),安装了新的ADT(Ubuntu Gnome 14.04 LTS,x86_64 CPU),但是我有以下内容Eclipse控制台中的错误: 这是我已经尝试过的: ->我试图通过Ubuntu软件存储库(重新)安装ia32-libs,libstdc 和libstdc 6:没有变化 ->检查更新(对于Ec

  • 本文向大家介绍解决启动MongoDB错误:error while loading shared libraries: libstdc++.so.6:cannot open shared object file:,包括了解决启动MongoDB错误:error while loading shared libraries: libstdc++.so.6:cannot open shared objec