我现在正试图在Linux环境中运行一些MATLAB代码:
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)
答案 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
>> !ldd ./vpdetection
要解决任何依赖项冲突,请在启动MATLAB本身或可执行文件时尝试使用LD_PRELOAD
:
$ LD_PRELOAD=/path/to/libstdc++.so matlab
或
>> system('LD_PRELOAD=/path/to/libstdc++.so ./vpdetection lines.tmp lines.out')