相关疑难解决方法(0)

什么是LD_PRELOAD技巧?

我最近在proggit看到了它的引用,并且(截至目前)它没有被解释.

我怀疑可能是它,但我不确定.

c linux environment-variables

321
推荐指数
6
解决办法
29万
查看次数

/usr/lib/libstdc++.so.6:未找到版本`GLIBCXX_3.4.15'

如何在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)

谢谢你的帮助!

c++ gcc libstdc++

131
推荐指数
4
解决办法
28万
查看次数

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

现在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使用的路径?谢谢.

linux matlab linker mex

12
推荐指数
3
解决办法
2万
查看次数

错误:找不到版本“GLIBCXX_3.4.21”

我正在尝试在 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 deniedmore /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)

我做了一些研究并找到了一些可能的解决方案:

  1. http://it.mathworks.com/matlabcentral/newsreader/view_thread/162466

问题是 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 compilation conv-neural-network

3
推荐指数
1
解决办法
7851
查看次数

/usr/../libstdc++.so.6:未找到版本`GLIBCXX_3.4.11'(需要......)

几个星期以来我一直坚持这个问题并一直在互联网上寻找解决方案,但到目前为止还不太好......

所以我有一个由其他人编写的程序,我尝试在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").

c++ linux matlab gcc mex

1
推荐指数
1
解决办法
2万
查看次数