编译Matlab MEX文件时出错(Piotr的Matlab工具箱)

时间:2013-02-17 07:31:04

标签: matlab gcc ubuntu mex

我正在尝试安装Piotr的Matlab工具箱(http://vision.ucsd.edu/~pdollar/toolbox/doc/),但是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

如何解决此问题?

2 个答案:

答案 0 :(得分: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编译命令中以获取有关编译的更详细信息。

答案 1 :(得分: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 install g ++ - multilib

  3. 如果您在32位机器上运行编辑toolboxCompile.m文件并替换代码行:

    “opts = {' - output'}”with “opts = {'CXXFLAGS = -msse2 -msse''-output'}”