gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-28 23:52:04 26 4
gpt4 key购买 nike

现在 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,但它不起作用。那么如果我不使用符号链接(symbolic link),我在哪里可以配置mex使用的libstdc++.so.6的路径呢?谢谢。

最佳答案

/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

问题是,当您使用 mex 构建时,它会将 -L/usr/local/MATLAB/R2012a/sys/os/glnx86 放在链接行上,因此链接器从那里获取 libstdc++.so

如果您不能说服 mex 先添加 -L/usr/lib/i386-linux-gnu,那么我认为您唯一的选择是删除/usr/local/MATLAB/R2012a/sys/os/glnx86/libstdc++.so(只需将其重命名为例如 libstdc++.so.bak)。

关于linux - 如何告诉 mex 链接到/usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的那个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com