2016-06-20 72 views
2

我想在Ubuntu 16.04上用Matlab 2016a編譯matconvnet-1.0-beta20。編譯的初始階段正常工作:錯誤:未找到版本`GLIBCXX_3.4.21'

untar('http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta20.tar.gz') ; 
cd matconvnet-1.0-beta20 
run matlab/vl_compilenn 

當我運行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) 

要了解的問題的原因,我跑/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 ******** 

我做了一些resear CH和發現了一些可能的解決方案:

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

The problem is that MATLAB secretly changes LD_LIBRARY_PATH on startup to point to the MATLAB version of GLIBC++, so that GLIBC++ 3.4.9 can no longer be found. The solution is to modify matlab/bin/.matlab7rc.sh so that "LDPATH_PREFIX" contains the path to the version of GLIB installed with your compiler, then this is found before the matlab-supplied library.

所以我編輯/usr/local/MATLAB/R2016a/bin/.matlab7rc.sh和第195行修改LDPATH_PREFIX=''LDPATH_PREFIX='/usr/lib/x86_64-linux-gnu'

應用此更改後,問題仍然存在。

如建議here,我將.matlab7rc.sh複製到項目的當前工作目錄,但仍然存在錯誤。

  • https://askubuntu.com/questions/719028/version-glibcxx-3-4-21-not-found
  • 根據第一個答案,在運行此命令 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的變化,但它不在文件內的任何地方。

  • How to tell mex to link with the libstdc++.so.6 in /usr/lib instead of the one in the MATLAB directory?
  • 從MATLAB目錄中/usr/local/MATLAB/R2016a/bin$我運行 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libstdc++.so.6

    ,但問題仍然存在。


    也許在那裏我沒有以正確的方式應用解決方案或者也許有另一種解決方案,我沒有找到。請讓我知道,我很困惑!

    +2

    http://stackoverflow.com/questions/25929332/version-glibcxx- 3-4-11-not-found-required-by-buildw-mexglx?rq = 1 - >看起來像是通過刪除libstdC++。so.6 – Woeitg

    回答

    -1

    有2級可能的解決方案:

    1. LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libstdc++.so.6

    2. 安裝該軟件包:

      sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
      sudo apt-get update 
      sudo apt-get upgrade 
      sudo apt-get dist-upgrade 
      
    3. 也許你提到的第二個解決方案確實有效,但在此之前你已經做到了。所以你不能再次以相同的方式操作,因爲你曾經連接/usr/lib/x86_64-linux-gnu/libstdc++.so.6usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6。嘗試重新啓動?

    此外,您使用MATLAB R2016a,但此命令適用於R2014a。是不是你忽略了這一點?

    3

    您需要(在我的情況MATLAB)執行添加庫的路徑:

    在控制檯執行此:

    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 matlab 
    
    相關問題