我正在尝试在 matlab 中编译 mex 文件。我运行的是 Ubuntu 14.04 和 Matlab R2014b。我遇到的第一个依赖问题是 GCC 需要版本 4.7.x,而我的系统运行的是 4.8.x。我通过更改 mexopts.sh 并将其放入我的 Matlab/R2014 路径中解决了这个问题。现在,我收到此错误:
mex ic.c -largeArrayDims -v
-> mexopts.sh sourced from directory (DIR = $PREF_DIR)
**FILE = /home/kyouma/.matlab/R2014b/mexopts.sh
----------------------------------------------------------------**
-> MATLAB = /usr/local/MATLAB/R2014b
-> CC = gcc-4.7
-> CC flags:
CFLAGS = -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread
CDEBUGFLAGS = -g
COPTIMFLAGS = -O -DNDEBUG
CLIBS = -Wl,-rpath-link,/usr/local/MATLAB/R2014b/bin/glnxa64 -L/usr/local/MATLAB/R2014b/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
arguments =
-> CXX = g++-4.7
-> CXX flags:
CXXFLAGS = -ansi -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O -DNDEBUG
CXXLIBS = -Wl,-rpath-link,/usr/local/MATLAB/R2014b/bin/glnxa64 -L/usr/local/MATLAB/R2014b/bin/glnxa64 -lmx -lmex -lmat -lm
arguments =
-> FC = gfortran
-> FC flags:
FFLAGS = -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer
FDEBUGFLAGS = -g
FOPTIMFLAGS = -O
FLIBS = -Wl,-rpath-link,/usr/local/MATLAB/R2014b/bin/glnxa64 -L/usr/local/MATLAB/R2014b/bin/glnxa64 -lmx -lmex -lmat -lm
arguments =
-> LD = gcc-4.7
-> Link flags:
LDFLAGS = -pthread -shared -Wl,--version-script,/usr/local/MATLAB/R2014b/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined
LDDEBUGFLAGS = -g
LDOPTIMFLAGS = -O
LDEXTENSION = .mexa64
arguments =
-> LDCXX =
-> Link flags:
LDCXXFLAGS =
LDCXXDEBUGFLAGS =
LDCXXOPTIMFLAGS =
LDCXXEXTENSION =
**arguments =
----------------------------------------------------------------**
-> gcc-4.7 -c -I/usr/local/MATLAB/R2014b/extern/include -I/usr/local/MATLAB/R2014b/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread -O -DNDEBUG "ic.c"
-> gcc-4.7 -O -pthread -shared -Wl,--version-script,/usr/local/MATLAB/R2014b/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined -o "ic.mexa64" ic.o -Wl,-rpath-link,/usr/local/MATLAB/R2014b/bin/glnxa64 -L/usr/local/MATLAB/R2014b/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
mex: link of ' "ic.mexa64"' failed.
Unable to complete successfully.
我尝试寻找它,但我发现的所有 libstdc++ 问题似乎都与 6.4 版本有关,并且我的错误没有弹出任何似乎特定于版本的错误。
我是 ubuntu 新手,因此如果有人能对此提供任何帮助我将不胜感激。谢谢。
答案1
我必须安装 g++。@steeldriver,谢谢你为我指明正确的方向 :) 我特意安装了 4.7 版本的 g++,因为 matlab 所需的 gcc 只有 4.7.x,而我的 matlab 版本的 mex 编译与 ubuntu 14.04 运行的默认 4.8 不兼容。