我正在尝试安装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
如何解决此问题?
答案 0 :(得分:2)
在matlab中编译mexfiles之前,需要配置mex编译器。
在matlab中,输入:
>> mex -setup
Matlab会自动检测您在计算机上安装的编译器,并允许您选择其中一个编译器 在Linux机器上,您应该使用gcc编译器。
您必须注意的另一件事是确保您的环境变量$LD_LIBRARY_PATH
指向机器库的安装位置。
在matlab中,您可以输入:
>> getenv('LD_LIBRARY_PATH')
并确保它是正确的。
尝试编辑toolboxCompile.m
并将-v
添加到mex编译命令中以获取有关编译的更详细信息。
答案 1 :(得分:2)
如果您是Linux(Ubuntu,但其他发行版应该可以工作)用户:
为了使用一些系统库而不是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;
安装g ++ - multilib:
apt-get install g ++ - multilib
如果您在32位机器上运行编辑toolboxCompile.m文件并替换代码行:
“opts = {' - output'}”with “opts = {'CXXFLAGS = -msse2 -msse''-output'}”