2013-02-17 206 views
0

我試圖安裝的Piotr的Matlab的工具箱(http://vision.ucsd.edu/~pdollar/toolbox/doc/)Matlab的MEX文件(彼得的Matlab的工具箱),但編譯腳本的MEX文件抱怨:錯誤編譯

>> toolboxCompile 
Compiling....................................... 

Warning: You are using gcc version "4.6.3-1ubuntu5)". The version 
    currently supported with MEX is "4.2.3". 
    For a list of currently supported compilers see: 
    http://www.mathworks.com/support/compilers/current_release/ 

/usr/bin/ld: cannot find -lstdc++ 
collect2: ld returned 1 exit status 

mex: link of ' "/home/josh/Desktop/Project/code/toolbox/images/private/assignToBins1.mexglx"' failed. 

??? Error using ==> mex at 222 
Unable to complete successfully. 

Error in ==> toolboxCompile at 36 
for i=1:length(fs), mex([fs{i} '.c'],opts{:},[fs{i} '.' mexext]); 
end 

我怎麼去解決這個問題?

+0

是否安裝G ++?似乎你沒有一個C++庫。 – 2013-02-17 07:47:04

回答

2
  1. 在matlab中編譯mexfiles之前,你需要配置你的mex編譯器。

    在MATLAB中,鍵入:

    >> mex -setup 
    

    Matlab的自動檢測已安裝在機器上的編譯器,並允許您選擇其中之一。
    在Linux機器上,您應該使用gcc編譯器。

  2. 您必須注意的另一件事是確保您的環境變量$LD_LIBRARY_PATH指向您的機器庫的安裝位置。
    在MATLAB中,你可以輸入:

    >> getenv('LD_LIBRARY_PATH') 
    

    ,並確保它是正確的。

  3. 嘗試編輯toolboxCompile.m並將-v添加到mex編譯命令以獲取有關編譯的更多詳細信息。

+0

謝謝Shai;其中一些信息非常有用。編譯進行但它進一步停滯「SSE2指令集未啓用」。 – Josh 2013-02-17 08:03:51

+0

@Josh - 我不熟悉這個錯誤。上次我安裝這個工具箱的時候,它在Linux和Windows上都很順利。嘗試看看工具箱本身是否有安裝文檔。 – Shai 2013-02-17 08:24:57

2

如果你是一個Linux(Ubuntu的,但其他的發行版應該是工作)用戶:

  1. 爲了使用一些系統庫,而不是Matlab的默認庫添加這個環境變量您的.bashrc (〜/ .bashrc):

    LD_PRELOAD =/lib/i386-linux-gnu/libc.so.6:/ usr/lib/i386-linux-gnu/libstdC++。so.6:/ lib/i386- Linux的GNU/libgcc_s.so.1;

  2. 安裝G ++ - multilib的:

    的apt-get安裝的g ++ - multilib的

  3. 如果您是在32位機編輯toolboxCompile.m文件運行,替換的代碼行:

    「OPTS = { ' - 輸出'}」 與 「OPTS = { 'CXXFLAGS = -msse2 -msse' ' - 輸出'}」