matlab - `GLIBCXX_3.4.11' 未找到,从链接到 glibc 的 MATLAB 运行系统调用不同于 matlab bin 路径中的内容

标签 matlab linker dynamic-linking glibc

我正试图绕过使用 MEX 链接到 MATLAB 并仅使用“!”调用二进制文件如:

>> !template_image_rigid -args ....
template_image_rigid: /opt/MatlabR2010a/sys/os/glnxa64/libstdc++.so.6: version    `GLIBCXX_3.4.11' not found (required by /usr/lib/libboost_program_options.so.1.40.0)
template_image_rigid: /opt/MatlabR2010a/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libdirac_encoder.so.0)

有没有办法从 MATLAB 中轻松解决这个动态链接问题?我知道我可以使用 MATLAB 重新编译源代码并使用 MEX 调用,但由于运行求解器需要一段时间,我只想将其作为 shell 命令运行,稍后将文本数据导入 MATLAB。

如果有帮助,可以在此处找到源代码和 CMakeLists.txt:https://github.com/pkarasev3/nlmagick/tree/master/samples

最佳答案

Grr,社区 = 失败。

诊断:在 matlab 中执行 !gnome-terminal 并查看“env”:

env | grep Matlab

给出

XKEYSYMDB=/opt/MatlabR2010a/X11/app-defaults/XKeysymDB
MATLABPATH=/opt/MatlabR2010a/toolbox/local
XAPPLRESDIR=/opt/MatlabR2010a/X11/app-defaults
LD_LIBRARY_PATH=/opt/MatlabR2010a/sys/os/glnxa64:/opt/MatlabR2010a/bin/glnxa64:/opt/MatlabR2010a/extern/lib/glnxa64:/opt/MatlabR2010a/runtime/glnxa64:/opt/MatlabR2010a/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/opt/MatlabR2010a/sys/java/jre/glnxa64/jre/lib/a  md64/server:/opt/MatlabR2010a/sys/java/jre/glnxa64/jre/lib/amd64
OSG_LD_LIBRARY_PATH=/opt/MatlabR2010a/sys/openscenegraph/lib/glnxa64
TOOLBOX=/opt/MatlabR2010a/toolbox
XFILESEARCHPATH=/opt/MatlabR2010a/sys/java/jre/glnxa64/jre/lib/locale/%L/%T/%N%S::/usr/dt/app-defaults/%L/Dt
MATLAB=/opt/MatlabR2010a

好的,LD_LIBRARY_PATH 是错误的。

技巧:编写一个 poltergeist 脚本并从 gnome 终端运行它,从 Matlab 启动它:

!./hack.sh  RunStuffThatLinksElsewhere

其中 hack.sh 是一个脚本,类似于:

#!/bin/bash
source ~/.bashrc
export LD_LIBRARY_PATH=''
gnome-terminal --command="${1}"

所以一个简单的测试是使用“eog”进行尝试,这个 hack 解决了链接问题并让您从 matlab 中运行它...

关于matlab - `GLIBCXX_3.4.11' 未找到,从链接到 glibc 的 MATLAB 运行系统调用不同于 matlab bin 路径中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5698747/

相关文章:

c++ - 将具有公共(public)头文件的目标文件链接到 main 会给出体系结构 x86_64 错误的重复符号

elf - 在运行时定位 ELF 共享库导出

c++ - 在 Debian/squeeze 上查找 libstdc++ 中丢失的符号

ubuntu - 使用 prefer-dynamic 时无法执行 hello world 项目

python - 从向量中动态追加和删除元素

matlab - 使单击 MATLAB 绘图标记绘制子图

c++ - 拥有同名库的静态和动态版本是一种常见的做法吗?

c++ - 包含 <execution> header 时出现 tbb 链接器错误

matlab - 粒子滤波器-Matlab

matlab - Matlab 上的图像去模糊