2013-02-17 214 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' ' - 输出'}”