Difference between revisions of "Support:Tech notes"
Line 50: | Line 50: | ||
lib /out:nvec_ser.lib *.obj</pre> | lib /out:nvec_ser.lib *.obj</pre> | ||
Copy nvec_ser.lib to the COMKATROOT\lib\win64 folder (change win64 according to your system) | Copy nvec_ser.lib to the COMKATROOT\lib\win64 folder (change win64 according to your system) | ||
− | + | ||
+ | |||
+ | ==== Linux ==== | ||
+ | NOTE: Under 64-bit Ubuntu and 64-bit Matlab, you have to do the following changes to make the mex compilation work. | ||
+ | 1. Edit the mexopts.sh and remove all ''-lstdc++'' | ||
+ | 2. Edit the cvodesGenmod5.c. Find function 'clear' and remove the 'static' declaration. | ||
+ | 3. When you use gcc to compile, add a flag '-fPIC'. |
Revision as of 23:19, 27 February 2008
Mex and compiler setting
How to set up mex compiler on a 64-bit Matlab using Visual Studio 2008 Professional
- I was using Visual Studio 2008 Profession that is free for college students. I believe 2008 Express works the same way, too.
- When you install Visual Studio 2008, I recommend to install 'Full' so that you are sure the 64-bit compilers and libraries are installed.
- Go to http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=18508&objectType=file. Download, uncompress and copy the x64 mex option files under the MATLABROOT\bin\win64\mexopts.
- Do a mex -setup. Let Matlab locate the installed compiler. Select "Microsoft Visual C++ 2008".
- Use mex command to compile a simple file. You get the following error
C:\PROGRA~1\MATLAB\R2007B\BIN\MEX.PL: Error: Using options file: C:\Users\deancool\AppData\Roaming\MathWorks\MATLAB\R2007b\mexopts.bat You cannot use this file with the WIN64 architecture because it enables a compiler for a different architecture. Running mex -setup may resolve this problem.
To fix this error:
- Locate your mexopts.bat file. Edit the following lines:
- Line 17 (set PATH): add '\amd64' after set PATH=%VCINSTALLDIR%\BIN\
- Line 19 (set LIB): add '\amd64' after set LIB=%VCINSTALLDIR%\ATLMFC\LIB and %VCINSTALLDIR%\LIB. Add '\x64' after C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
- Line 20: set MW_TARGET_ARCH=win64
- Line 34: set LIBLOC=%MATLAB%\extern\lib\win64\microsoft
- Line 36: /MACHINE:X64
NOTE: Environment - Windows Vista 64-bit, Matlab 2007b 64-bit. My mexopts.bat file: File:Mexopts.zip
How to set up the C compiler from Visual Studio 2008 on a 64-bit Windows system
- Go to control->system->environmental variables. Edit 'path' and add the following dir: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64
- Go to control->system->environmental variables. Edit 'LIB' and add the following dir: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64
Or go to C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64 and run vcvarsamd64.bat
How to set up mex compiler on a 64-bit Matlab using MinGW
How to set up the C compiler from MinGW on a 64-bit Windows system
How to compile cvOdesGenMod5.c
Windows
1. Enter COMKATROOT\CVODESserial-2.3.0-2005\sundials\cvodes\source. Run:
cl /c /I..\include /I..\..\shared\include *.c lib /out:cvodes.lib *.obj
Copy cvodes.lib to the COMKATROOT\lib\win64 folder (change win64 according to your system) 2. Enter COMKATROOT\CVODESserial-2.3.0-2005\sundials\shared\source. Run:
cl /c /I..\include *.c lib /out:sundials.lib *.obj
Copy sundials.lib to the COMKATROOT\lib\win64 folder (change win64 according to your system) 3. Enter COMKATROOT\CVODESserial-2.3.0-2005\sundials\nvec_ser. Run
cl /c /I..\shared\include *.c lib /out:nvec_ser.lib *.obj
Copy nvec_ser.lib to the COMKATROOT\lib\win64 folder (change win64 according to your system)
Linux
NOTE: Under 64-bit Ubuntu and 64-bit Matlab, you have to do the following changes to make the mex compilation work. 1. Edit the mexopts.sh and remove all -lstdc++ 2. Edit the cvodesGenmod5.c. Find function 'clear' and remove the 'static' declaration. 3. When you use gcc to compile, add a flag '-fPIC'.