未找到 Matlab mex lstdc++

未找到 Matlab mex lstdc++

我正在尝试在 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 不兼容。

相关内容