【发布时间】:2014-03-21 16:33:58
【问题描述】:
我已经被这个问题困扰了几个星期,并在互联网上四处寻找解决方案,但到目前为止还不是很好......
所以我有一个由其他人编写的程序,我尝试在 Matlab 中编译它以使其工作。我的电脑是安装了 gcc 4.4.3 和 Matlab 2011b 的 Red-hat 企业 Linux 工作站(64 位)。 gcc 与我的 Matlab (http://www.mathworks.com/support/compilers/R2011b/glnxa64.html) 兼容。
编译工作正常(我的意思是,在 Matlab 命令窗口中没有出现错误消息)。但是编译后,每次使用编译中的特定函数(称为“mexLasso”)时,都会显示如下错误:
***无效的 MEX 文件“/usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64”: /usr/local/matlab_R2011b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6:版本 找不到“GLIBCXX_3.4.11”(需要 /usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64)
测试错误(第 24 行) alpha=mexLasso(X,D,param);*
所以我在终端中输入“strings /usr/lib/libstdc++.so.6 | grep GLIBC”,我发现“GLIBCXX_3.4.11”实际上就在其中。
我只用了几个月的 Linux 和 gcc 的东西……所以还有很多我不明白的东西。如果您能详细解释一下,将会有很大帮助。谢谢!!
%% 更多细节: 我从http://spams-devel.gforge.inria.fr/downloads.html 获得了这些机器学习程序。奇怪的是,编译后,该包中的其他功能可以正常工作(例如“mexTrainDL”)。
【问题讨论】:
-
ubuntuforums.org/showthread.php?t=1809300 同样的问题。是你的吗?
-
我检查了 ubuntuforums 中提供的那个并遵循了他的解决方案,但它没有帮助:-( ["...删除了符号链接 libstdc++.so.6 及其链接伙伴 libstdc++.so .6* 在 /$MATLAB/sys/os/glnxa64 中,并将它们都替换为在 /usr/lib 中找到的类似名称的对应物(即 ln -s /usr/lib/libstdc++.so.6*)。 .."]
-
使用
strings和grep对于查看库定义的内容有点简单,尤其是涉及到C++ 名称修改。使用nm和此处描述的相关工具:stackoverflow.com/questions/34732/… -
先生,我使用“readelf -Ws libstdc++.so.6”并找到了 GLIBCXX_3.4.11,然后是一个巨大的列表,例如“2497: 00000000 0 OBJECT GLOBAL DEFAULT ABS GLIBCXX_3.4.13”。这正常吗?