How to provide Matlab with the old version of gcc he wants?

On my computer, I have Ubuntu 10.10 with gcc 4.4.4. I try to compile some mex files that use CUDA and I get the following error message:

>> 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 

I assume by associating Matlab with gcc 4.2.3. I can get rid of the error, but I do not know how to do it.

mex -setup gives me the following options:

 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 
+8
gcc matlab cuda mex
source share
1 answer

I solved it by changing my mexopts.sh file to ~/matlab/R2009b/mexopts.sh (changing your version in Matlab)

Find your architecture (for me it is glnxa64 ) and change it like this:

  ;; 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' 

PS: you also need to install the correct version of gcc

+9
source share

All Articles