Hi there!
I am currently trying to run someone else's code on my machine (Link).
The precompiled MEX files are available for a Linux 64-bit machine. However, I am trying to run it on a Mac using MATLAB 2012b.
I adapted the makefile by adjusting the MATLAB directory. However, I still get some compilation errors.
It seems that certain libraries cannot be located.
mycomputer:mpi_kmeans-1.5 username$ make matlab
ar rc libmpikmeans.a mpi_kmeans.o
ranlib libmpikmeans.a
g++ -shared -fPIC -O3 -ffast-math -fomit-frame-pointer -fPIC -m64 -o libmpikmeans.so mpi_kmeans.cxx
gcc mpi_kmeans_mex.o -shared -o mpi_kmeans_mex.mexmaci64 libmpikmeans.a -L/Applications/MATLAB_R2012b.app/bin/maci64 -lmex
Undefined symbols:
"_mxGetM", referenced from:
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
"_mxGetN", referenced from:
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
"_mxIsDouble", referenced from:
_mexFunction in mpi_kmeans_mex.o
"___gxx_personality_v0", referenced from:
_mexFunction in mpi_kmeans_mex.o
CIE in mpi_kmeans_mex.o
comp_randperm(void const*, void const*)in libmpikmeans.a(mpi_kmeans.o)
remove_point_from_cluster(unsigned int, double*, double const*, unsigned int*, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
add_point_to_cluster(unsigned int, double*, double const*, unsigned int*, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
compute_distance(double const*, double const*, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
randperm(unsigned int*, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
kmeans_error(char*) in libmpikmeans.a(mpi_kmeans.o)
remove_identical_clusters(double*, float*, double const*, unsigned int*, unsigned int*, unsigned int, unsigned int, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
compute_cluster_distances(float*, float*, double const*, unsigned int, unsigned int, bool const*)in libmpikmeans.a(mpi_kmeans.o)
compute_sserror(double const*, double const*, unsigned int const*, unsigned int, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
assign_point_to_cluster(unsigned int, double const*, double const*, unsigned int, unsigned int, unsigned int, double*, float*, float*, float*)in libmpikmeans.a(mpi_kmeans.o)
assign_point_to_cluster_ordinary(double const*, double const*, unsigned int, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
init_point_to_cluster(unsigned int, double const*, double const*, unsigned int, unsigned int, double*, float*, float const*)in libmpikmeans.a(mpi_kmeans.o)
kmeans_run(double*, double const*, unsigned int*, unsigned int, unsigned int, unsigned int, unsigned int)in libmpikmeans.a(mpi_kmeans.o)
_kmeans in libmpikmeans.a(mpi_kmeans.o)
CIE in libmpikmeans.a(mpi_kmeans.o)
"_mxCreateNumericArray_730", referenced from:
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
"_mxIsComplex", referenced from:
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
"_mxGetNumberOfDimensions_730", referenced from:
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
"_mxIsInf", referenced from:
_mexFunction in mpi_kmeans_mex.o
"_mxIsSingle", referenced from:
_mexFunction in mpi_kmeans_mex.o
"_mxIsNaN", referenced from:
_mexFunction in mpi_kmeans_mex.o
"_mxGetPr", referenced from:
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
_mexFunction in mpi_kmeans_mex.o
"_mxCreateDoubleScalar", referenced from:
_mexFunction in mpi_kmeans_mex.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [mpi_kmeans_mex.mexmaci64] Error 1
Any ideas where the problem could be?