错误./vpdetection:/gpfs/apps/x86_64-rhel5/matlab/R2012a/sys/os/glnxa64/libstdc++.so.6:找不到版本`GLIBCXX_3.4.14'

时间:2013-09-01 15:35:27

标签: linux matlab g++ libstdc++

我现在正试图在Linux环境中运行一些MATLAB代码:

  • Linux版本是Red Hat Enterprise Linux Server 5.9版(Tikanga)。
  • gcc版本是4.1.2。
  • MALTAB版本是R2012b。

MALTAB中导致问题的声明是:

[status, result] = system('./vpdetection lines.tmp lines.out');

我收到如下错误:

  

./ vpdetection:/gpfs/apps/x86_64-rhel5/matlab/R2012a/sys/os/glnxa64/libstdc++.so.6:找不到版本`GLIBCXX_3.4.14'

我搜索了几个解决方案,但它们都需要编辑系统文件。 由于我在服务器上运行代码,我没有sudo编辑系统文件的权限。

是否还有其他不需要编辑系统文件的变通方法?


我尝试过ldd命令。结果如下:

[sxh415@cyberstar vpdetection]$ ldd matlab/vpdetection
matlab/vpdetection: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by matlab/vpdetection)
matlab/vpdetection: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by matlab/vpdetection)
matlab/vpdetection: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by matlab/vpdetection)
    linux-vdso.so.1 =>  (0x00007ffff7ff8000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003845400000)
    libm.so.6 => /lib64/libm.so.6 (0x0000003840400000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003844c00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003840000000)
    /lib64/ld-linux-x86-64.so.2 (0x000000383fc00000)

2 个答案:

答案 0 :(得分:0)

  

/ gpfs​​ / apps / x86_64-rhel5 / matlab / R2012a / sys / os / glnxa64 / libstdc ++。so.6:版本`GLIBCXX_3.4.14'未找到

此错误表示:与您的Matlab版本一起分发的libstdc++.so.6太旧,并且不提供版本`GLIBCXX_3.4.14'。 matlab版本对应于gcc-4.5或更早版本,但你有一些用gcc-4.6(或更高版本)编译的代码。

必须安排你的可执行文件来获取更新的libstdc ++。so.6。

  

我没有权利编辑系统文件。

您可以将libstdc++.so.6的足够新版本复制到~/lib64,然后再复制export LD_LIBRARY_PATH=$HOME/lib64

答案 1 :(得分:0)

在MATLAB内部和外部系统shell上运行ldd可执行文件:

贝壳

$ ldd ./vpdetection

MATLAB

>> !ldd ./vpdetection

要解决任何依赖项冲突,请在启动MATLAB本身或可执行文件时尝试使用LD_PRELOAD

$ LD_PRELOAD=/path/to/libstdc++.so matlab

>> system('LD_PRELOAD=/path/to/libstdc++.so ./vpdetection lines.tmp lines.out')