Comments (6)
try the following in the RF_Class_C folder
as fortran is needed to compile into a .o file do the following from the
terminal (not the matlab terminal but the system terminal)
gfortran -fpic -march=native -c src/rfsub.f -o rfsub.o
gfortran may be g77 or f77 or something else depending on how fortran is
invoked from the command prompt
once the rfsub.o is generated (just check if its in the RF_Class_C folder )
invoke the following from matlab prompt (i am assuming that mex -setup was
successful in finding the C compiler (gcc) or g++)
mex src/mex_ClassificationRF_train.cpp src/classRF.cpp src/classTree.cpp
src/rfutils.cpp src/cokus.cpp rfsub.o -o mexClassRF_train -lm -DMATLAB -O -v
and then
mex src/mex_ClassificationRF_predict.cpp src/classRF.cpp src/classTree.cpp
src/rfutils.cpp src/cokus.cpp rfsub.o -o mexClassRF_predict -lm -DMATLAB -O -v
that should generate the training predict mex files. Note that do comment out
the compile_linux/compile_windows file in the tutorial file before running the
tutorial file else it will zap the mex files.
if you get the above steps working then maybe a better source would be the svn
source which has some bug fixes etc. The compilation steps would remain the
same.
Original comment by abhirana
on 26 Dec 2012 at 6:11
- Changed state: Accepted
from randomforest-matlab.
Thank you for a very quick reply, and happy new year. I have tried running the
command:-
gfortran -fpic -march=native -c src/rfsub.f -o rfsub.o
And receive the following error:-
src/rfsub.f -o rfsub.o
src/rfsub.f:0: error: bad value (native) for -march= switch
src/rfsub.f:0: error: bad value (native) for -mtune= switch
Any guidance would be greatly appreciated
Dan
Original comment by [email protected]
on 26 Dec 2012 at 8:30
from randomforest-matlab.
Happy new year to you too
Try this. Remove the -march=native string in the gfortran line and rerun the
command. Some old gcc version don't have that optimization flag
Original comment by abhirana
on 26 Dec 2012 at 10:52
from randomforest-matlab.
I have been able to compile the rfsub file. However another problem presents
itself in Matlab (I m able to compile other mex files using the compiler). The
error is:-
mex src/mex_ClassificationRF_train.cpp src/classRF.cpp src/classTree.cpp
src/rfutils.cpp src/cokus.cpp rfsub.o -o mexClassRF_train -lm -DMATLAB -O -v
**************************************************************************
Warning: Neither -compatibleArrayDims nor -largeArrayDims is selected.
Using -compatibleArrayDims. In the future, MATLAB will require
the use of -largeArrayDims and remove the -compatibleArrayDims
option. For more information, see:
http://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.html
**************************************************************************
-> mexopts.sh sourced from directory (DIR = $PREF_DIR)
FILE = /Users/user/.matlab/R2012a/mexopts.sh
----------------------------------------------------------------
-> MATLAB = /Applications/MATLAB_R2012a.app
-> CC = llvm-gcc-4.2
-> CC flags:
CFLAGS = -fno-common -no-cpp-precomp -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -fexceptions
CDEBUGFLAGS = -g
COPTIMFLAGS = -O2 -DNDEBUG
CLIBS = -L/Applications/MATLAB_R2012a.app/bin/maci64 -lmx -lmex -lmat -lstdc++
arguments = -DMATLAB -DMX_COMPAT_32
-> CXX = llvm-g++-4.2
-> CXX flags:
CXXFLAGS = -fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O2 -DNDEBUG
CXXLIBS = -L/Applications/MATLAB_R2012a.app/bin/maci64 -lmx -lmex -lmat -lstdc++
arguments = -DMATLAB -DMX_COMPAT_32
-> FC = /usr/local/bin/gfortran
-> FC flags:
FFLAGS = -fexceptions -m64 -fbackslash
FDEBUGFLAGS = -g
FOPTIMFLAGS = -O5 -funroll-loops -ftree-vectorize
FLIBS = -L/Applications/MATLAB_R2012a.app/bin/maci64 -lmx -lmex -lmat -L/usr/local/lib/ -lgfortran -L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64/ -lgfortranbegin
arguments = -DMATLAB -DMX_COMPAT_32
-> LD = llvm-gcc-4.2
-> Link flags:
LDFLAGS = -Wl,-twolevel_namespace -undefined error -arch x86_64 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -bundle -Wl,-exported_symbols_list,/Applications/MATLAB_R2012a.app/extern/lib/maci64/mexFunction.map
LDDEBUGFLAGS = -g
LDOPTIMFLAGS = -O
LDEXTENSION = .mexmaci64
arguments = -lm
-> LDCXX =
-> Link flags:
LDCXXFLAGS =
LDCXXDEBUGFLAGS =
LDCXXOPTIMFLAGS =
LDCXXEXTENSION =
arguments = -lm
----------------------------------------------------------------
-> llvm-g++-4.2 -c -I/Applications/MATLAB_R2012a.app/extern/include
-I/Applications/MATLAB_R2012a.app/simulink/include -DMATLAB_MEX_FILE
-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S
DKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -DMATLAB -DMX_COMPAT_32 -O2
-DNDEBUG "src/mex_ClassificationRF_train.cpp"
-> llvm-g++-4.2 -c -I/Applications/MATLAB_R2012a.app/extern/include
-I/Applications/MATLAB_R2012a.app/simulink/include -DMATLAB_MEX_FILE
-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S
DKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -DMATLAB -DMX_COMPAT_32 -O2
-DNDEBUG "src/classRF.cpp"
-> llvm-g++-4.2 -c -I/Applications/MATLAB_R2012a.app/extern/include
-I/Applications/MATLAB_R2012a.app/simulink/include -DMATLAB_MEX_FILE
-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S
DKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -DMATLAB -DMX_COMPAT_32 -O2
-DNDEBUG "src/classTree.cpp"
-> llvm-g++-4.2 -c -I/Applications/MATLAB_R2012a.app/extern/include
-I/Applications/MATLAB_R2012a.app/simulink/include -DMATLAB_MEX_FILE
-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S
DKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -DMATLAB -DMX_COMPAT_32 -O2
-DNDEBUG "src/rfutils.cpp"
-> llvm-g++-4.2 -c -I/Applications/MATLAB_R2012a.app/extern/include
-I/Applications/MATLAB_R2012a.app/simulink/include -DMATLAB_MEX_FILE
-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S
DKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -DMATLAB -DMX_COMPAT_32 -O2
-DNDEBUG "src/cokus.cpp"
-> llvm-gcc-4.2 -O -Wl,-twolevel_namespace -undefined error -arch x86_64
-Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.plat
form/Developer/SDKs/MacOSX10.7.sdk/ -mmacosx-version-min=10.5 -bundle
-Wl,-exported_symbols_list,/Applications/MATLAB_R2012a.app/extern/lib/maci64/mex
Function.map -o "mexClassRF_train.mexmaci64" mex_ClassificationRF_train.o
classRF.o classTree.o rfutils.o cokus.o "rfsub.o" -lm
-L/Applications/MATLAB_R2012a.app/bin/maci64 -lmx -lmex -lmat -lstdc++
ld: warning: ignoring file rfsub.o, file was built for i386 which is not the
architecture being linked (x86_64): rfsub.o
Undefined symbols for architecture x86_64:
"_buildtree_", referenced from:
classRF(double*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, double*, double*, int*, int*, int*, double*, double*, double*, double*, int*, int*, int*, int*, int*, int*, double*, double*, int*, double*, int*, int*, double*, int*, int, double*, double*, int*)in classRF.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
mex: link of ' "mexClassRF_train.mexmaci64"' failed.
Error using mex (line 206)
Unable to complete successfully.
Thanks very much for your help and time
Dan
Original comment by [email protected]
on 27 Dec 2012 at 10:43
from randomforest-matlab.
Hi Dan
looks like the fortran compiler you are using is generating 32 bit binaries
that cannot be merged with the 64-bit binaries generated in matlab mex.
you will have to update to a fortran version that generates 64 bit binaries or
use a 32bit matlab (the latter might not be possible because i guess mathworks
has cancelled developing 32 bits for many architectures) maybe macports/fink
has 64bit fortran.
Original comment by abhirana
on 27 Dec 2012 at 7:16
from randomforest-matlab.
After checking, I already had the correct compiler installed. I reinstalled the
compiler and success - everything in post #1 works. Thank you very much for all
your assistance.
Happy new year.
Dan
Original comment by [email protected]
on 27 Dec 2012 at 9:03
from randomforest-matlab.
Related Issues (20)
- weak learner HOT 1
- Compiled mexmaci64 for OSX 10.8.2 (Mountain Lion) HOT 2
- about the unbalanced data HOT 32
- Segmentation violation problem HOT 2
- Hierarchical sampling of data? HOT 3
- memory leak in HOT 1
- probability of classes for highly skewed dataset HOT 2
- Feature Normalization HOT 1
- sampsize problem
- score values from random forest HOT 1
- MATLAB crashes after tens of thousands runs !! HOT 3
- Compilation Problems with Matlab 2014a on Mac HOT 7
- How to get individual tree predictions for regression HOT 2
- use library (gcc) in matlab and error with compile of mex HOT 1
- NaN data HOT 4
- multivariate label output in regression analysis
- Matlab (randomly) crash after a number of runs HOT 5
- Directions for Bagging Regression HOT 2
- Quantifying Fractal Dimension HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from randomforest-matlab.