2013-06-04 141 views
0

我试图在MATLAB中使用MEX函数在Linux服务器上编译C++文件(mysql.cpp)。 我得到这个错误,我无法弄清楚为什么?MATLAB MEX C++文件编译错误g ++命令未找到

/opt/MATLAB/R2013a/bin/mex: line 1343: g++: command not found 
mex: compile of ' "mysql.cpp"' failed. 

我使用这个命令:

mex -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient mysql.cpp 

和这里的MEX编译器配置详情: -

-> mexopts.sh sourced from directory (DIR = $PREF_DIR) 

    FILE = /root/.matlab/R2013a/mexopts.sh 

---------------------------------------------------------------- 
-> MATLAB    = /opt/MATLAB/R2013a 

-> CC     = gcc 

-> CC flags: 

    CFLAGS    = -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread 

    CDEBUGFLAGS  = -g 

    COPTIMFLAGS  = -O -DNDEBUG 

    CLIBS    = -Wl,-rpath-link,/opt/MATLAB/R2013a/bin/glnxa64 -L/opt/MATLAB/R2013a/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++ 

    arguments   = -DMX_COMPAT_32 

-> CXX    = g++ 

-> CXX flags: 

    CXXFLAGS   = -ansi -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread 

    CXXDEBUGFLAGS  = -g 

    CXXOPTIMFLAGS  = -O -DNDEBUG 

    CXXLIBS   = -Wl,-rpath-link,/opt/MATLAB/R2013a/bin/glnxa64 -L/opt/MATLAB/R2013a 
/bin/glnxa64 -lmx -lmex -lmat -lm 

    arguments   = -DMX_COMPAT_32 

-> FC     = gfortran 

-> FC flags: 

    FFLAGS    = -fexceptions -fbackslash -fPIC -fno-omit-frame-pointer 

    FDEBUGFLAGS  = -g 

    FOPTIMFLAGS  = -O 

    FLIBS    = -Wl,-rpath-link,/opt/MATLAB/R2013a/bin/glnxa64 -L/opt/MATLAB/R2013a 
/bin/glnxa64 -lmx -lmex -lmat -lm 

    arguments   = -DMX_COMPAT_32 

-> LD     = g++ 

-> Link flags: 

    LDFLAGS   = -pthread -shared -Wl,--version-script,/opt/MATLAB/R2013a/extern 
/lib/glnxa64/mexFunction.map -Wl,--no-undefined 

    LDDEBUGFLAGS  = -g 

    LDOPTIMFLAGS  = -O 

    LDEXTENSION  = .mexa64 

    arguments   = -Lusr/lib/mysql -lmysqlclient 

-> LDCXX     = 


-> Link flags: 

    LDCXXFLAGS   = 

    LDCXXDEBUGFLAGS = 

    LDCXXOPTIMFLAGS = 

    LDCXXEXTENSION  = 

    arguments   = -Lusr/lib/mysql -lmysqlclient 

请帮我找出什么是错的。

+1

看来你没有安装编译器。如何安装,取决于您使用的发行版。在Ubuntu'apt-get install build-essential'中,另请参阅http://stackoverflow.com/questions/784063/how-to-install-g-4-4-on-ubuntu – ShinTakezou

+0

所以我需要分别安装g ++编译器? –

+0

你当然需要它。 – ShinTakezou

回答

1

是的,你应该在编译之前安装一个编译器。 Mex只是一个在下面调用的工具,因为g ++是gcc的C++编译器,您应该安装这个工具。

据我所知,它仍然不起作用,因为matlab只支持gcc 4.3(不确定)。因此安装gcc并运行 mex -setup

之后您应该可以编译。

+0

我第一次尝试编译,我得到了一个像GCC版本4.4.X所需的MATLAB版本的消息“”..我使用MATLAB R2013a ..然后我安装了GCC 4.4.7,但我仍然得到这个错误.. –

+0

我infact从epel存储库安装了gcc C++ 4.5.0-2.el6。但同样的问题 –

+0

有没有办法知道可执行文件的实际搜索位置?如果你从shell运行'g ++ --version',你会得到什么版本? – ShinTakezou