2011-12-15 12 views
8

En mi computadora tengo Ubuntu 10.10 con gcc 4.4.4. Intento compilar algunos archivos mex que utilizan CUDA y me sale mensaje de error siguiente:¿Cómo proporcionar a Matlab la versión anterior de gcc que desea?

>> cns_build('hmax') 
compiling... 
/home/leMe/hmax/cns/source/common_dec.h(54): warning: omission of exception specification is incompatible with previous function "operator new(size_t)" 
/usr/include/c++/4.4/new(91): here 
/home/leMe/hmax/cns/source/common_dec.h(55): warning: omission of exception specification is incompatible with previous function "operator new[](size_t)" 
/usr/include/c++/4.4/new(92): here 
/home/leMe/hmax/cns/source/common_dec.h(56): warning: omission of exception specification is incompatible with previous function "operator delete(void *)" 
/usr/include/c++/4.4/new(93): here 
/home/leMe/hmax/cns/source/common_dec.h(57): warning: omission of exception specification is incompatible with previous function "operator delete[](void *)" 
/usr/include/c++/4.4/new(94): here 

Segmentation fault 
CUDA preprocessing [nvcc] failed 
Warning: You are using gcc version "4.4.4-14ubuntu5)". 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/ 
CPU compilation successful 

que asumen mediante la vinculación de Matlab con gcc 4.2.3 Puedo sacarlo del error, pero no sé cómo para hacerlo.

mex -setup me da opciones siguientes:

1: /home/leMe/Matlab/bin/gccopts.sh : 
     Template Options file for building gcc MEX-files 

    2: /home/leMe/Matlab/bin/mexopts.sh : 
     Template Options file for building MEX-files via the system ANSI compiler 

Respuesta

9

Lo resuelto por cambiar mi mexopts.sh file, en ~/matlab/R2009b/mexopts.sh (cambio con su versión de Matlab)

Encuentra su arquitectura (para mí es glnxa64) , y cámbialo así:

 ;; 
    glnxa64) #<----------------------- FIND THIS 
     RPATH="-Wl,-rpath-link,$TMW_ROOT/bin/$Arch" 
     # StorageVersion: 1.0 
     # CkeyName: GNU C 
     # CkeyManufacturer: GNU 
     # CkeyLanguage: C 
     # CkeyVersion: 
     CC='gcc-4.1' #<---------------------------------- CHANGE HERE 
     CFLAGS='-ansi -D_GNU_SOURCE' 
     CFLAGS="$CFLAGS -fexceptions" 
     CFLAGS="$CFLAGS -fPIC -fno-omit-frame-pointer -pthread" 
     CLIBS="$RPATH $MLIBS -lm" 
     COPTIMFLAGS='-O -DNDEBUG' 
     CDEBUGFLAGS='-g' 
     CLIBS="$CLIBS -lstdc++" 
     # 
     # C++keyName: GNU C++ 
     # C++keyManufacturer: GNU 
     # C++keyLanguage: C++ 
     # C++keyVersion: 
     CXX='g++-4.1' #<---------------------------------- CHANGE HERE 
     CXXFLAGS='-ansi -D_GNU_SOURCE' 
     CXXFLAGS="$CXXFLAGS -fPIC -fno-omit-frame-pointer -pthread" 
     CXXLIBS="$RPATH $MLIBS -lm" 
     CXXOPTIMFLAGS='-O -DNDEBUG' 
     CXXDEBUGFLAGS='-g' 

PD: también necesita instalar la versión correcta de gcc

+0

¿Lo intentó? ¿Funcionó? – Oli

+0

¡Lo intentaré hoy! – Framester

+0

No instalo gcc4.2.3. Intento tu respuesta tan pronto como lo solucione. – Framester

Cuestiones relacionadas