1

我现在正在尝试在 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)
4

2 回答 2

0

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

这个错误的意思是:libstdc++.so.6随你分发的Matlab版本太旧,并且没有提供版本`GLIBCXX_3.4.14'。matlab 版本对应于 gcc-4.5 或更早版本,但您有一些使用 gcc-4.6(或更高版本)编译的代码。

必须安排您的可执行文件选择更新的 libstdc++.so.6。

我没有编辑系统文件的 sudo 权限。

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

于 2013-09-01T18:31:05.527 回答
0

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

$ ldd ./vpdetection

MATLAB

>> !ldd ./vpdetection

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

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

或者

>> system('LD_PRELOAD=/path/to/libstdc++.so ./vpdetection lines.tmp lines.out')
于 2013-09-01T22:54:39.660 回答