如何在Ubuntu中获得GLIBCXX_3.4.15?我无法运行一些我正在编译的程序.
当我做:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
Run Code Online (Sandbox Code Playgroud)
我明白了:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
现在mex in MATLAB 2012a只正式支持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)
Run Code Online (Sandbox Code Playgroud)
通过strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep 'GLIBCXX'本人确认libstdc++.so.6具有版本字符串.我检查mexopts.sh并修改了该变量$RPATH并$MLIBS在该脚本中,但它不起作用.所以如果我不使用符号链接,我在哪里可以配置libstdc++.so.6mex使用的路径?谢谢.
我正在尝试在 Ubuntu 16.04 上使用 Matlab 2016a 编译 matconvnet-1.0-beta20。编译的初始阶段工作正常:
untar('http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta20.tar.gz') ;
cd matconvnet-1.0-beta20
run matlab/vl_compilenn
Run Code Online (Sandbox Code Playgroud)
当我运行时发生错误vl_simplenn(network, image),给出以下错误:
Invalid MEX-file '/home/matconvnet-1.0-beta20/matlab/mex/vl_nnconv.mexa64':
/usr/local/MATLAB/R2016a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version
`GLIBCXX_3.4.21' not found (required by /home/matconvnet-1.0-beta20/matlab/mex/vl_nnconv.mexa64)
Run Code Online (Sandbox Code Playgroud)
为了了解问题的原因,我运行/usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC它没有给出任何输出bash: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: Permission denied
也more /usr/lib/x86_64-linux-gnu/libstdc++.so.6没有给出输出:
******** /usr/lib/x86_64-linux-gnu/libstdc++.so.6: Not a text file ********
Run Code Online (Sandbox Code Playgroud)
我做了一些研究并找到了一些可能的解决方案:
问题是 MATLAB 在启动时秘密更改 LD_LIBRARY_PATH 以指向 GLIBC++ 的 MATLAB 版本,因此无法再找到 GLIBC++ 3.4.9。解决方案是修改 matlab/bin/.matlab7rc.sh ,使“LDPATH_PREFIX”包含随编译器安装的 GLIB 版本的路径,然后在 matlab 提供的库之前找到它。
所以我在第195行编辑/usr/local/MATLAB/R2016a/bin/.matlab7rc.sh修改为.LDPATH_PREFIX=''LDPATH_PREFIX='/usr/lib/x86_64-linux-gnu'
应用此更改后,问题仍然存在。
按照此处的建议,我将 .matlab7rc.sh …
几个星期以来我一直坚持这个问题并一直在互联网上寻找解决方案,但到目前为止还不太好......
所以我有一个由其他人编写的程序,我尝试在Matlab中编译它以使其工作.我的电脑是Red-hat企业Linux工作站(64位),安装了gcc 4.4.3和Matlab 2011b.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").