Woe*_*itg 3 matlab compilation conv-neural-network
我正在尝试在 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 复制到项目的当前工作目录,但错误仍然存在。
根据第一个答案,运行此命令
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6
会出现错误:
ln: failed to create symbolic link 'usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6': No such file or directory
似乎第二个解决方案建议更改LD_PRELOAD中的路径.matlab7rc.sh,但它不在文件内的任何位置。
/usr/local/MATLAB/R2016a/bin$从我运行的
Matlab 目录中export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libstdc++.so.6
但问题仍然存在。
也许我没有以正确的方式应用该解决方案,或者也许在其他地方有另一个我没有找到的解决方案。请告诉我,我很困惑!
小智 6
您需要在执行之前(在我的例子中是matlab)添加库的路径:
在控制台中执行以下命令:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 matlab
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7851 次 |
| 最近记录: |