0

我正在尝试安装 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

我该如何解决这个问题?

4

2 回答 2

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'}”与“opts = {'CXXFLAGS=-msse2 -msse''-output'}”

于 2013-07-16T06:22:26.330 回答
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 编译命令以获取有关编译的更多详细信息。

于 2013-02-17T07:52:16.510 回答