MEX error compiling libeemd
4 ビュー (過去 30 日間)
古いコメントを表示
Hi, I am using MATLAB 2015b on OSX, and I am trying to MEX compile the eemd.c function from the libeemd package https://bitbucket.org/luukko/libeemd, but I am running into problems when I try to compile.
When running the command
mex eemd.c
I get the following
Error using mex
In file included from /Users/neergaard/Dropbox/Studie/Master/Matlab/library/resources/libeemd/src/eemd.c:19:
/Users/neergaard/Dropbox/Studie/Master/Matlab/library/resources/libeemd/src/eemd.h:37:10: fatal error: 'gsl/gsl_statistics_double.h' file not found
#include <gsl/gsl_statistics_double.h>
^
1 error generated.
Then I tried the following in order to force the compiler to look in the correct folder
mex -I/opt/local/include/ eemd.c
However the result then was this
Error using mex
Undefined symbols for architecture x86_64:
"_gsl_linalg_solve_tridiag", referenced from:
_emd_evaluate_spline in eemd.o
"_gsl_poly_dd_eval", referenced from:
_emd_evaluate_spline in eemd.o
"_gsl_poly_dd_init", referenced from:
_emd_evaluate_spline in eemd.o
"_gsl_ran_gaussian", referenced from:
_eemd in eemd.o
_ceemdan in eemd.o
"_gsl_rng_alloc", referenced from:
_allocate_eemd_workspace in eemd.o
_eemd in eemd.o
_ceemdan in eemd.o
"_gsl_rng_free", referenced from:
_free_eemd_workspace in eemd.o
_eemd in eemd.o
_ceemdan in eemd.o
"_gsl_rng_mt19937", referenced from:
_allocate_eemd_workspace in eemd.o
_eemd in eemd.o
_ceemdan in eemd.o
"_gsl_rng_set", referenced from:
_allocate_eemd_workspace in eemd.o
_eemd in eemd.o
_ceemdan in eemd.o
"_gsl_stats_sd", referenced from:
_eemd in eemd.o
_ceemdan in eemd.o
"_gsl_strerror", referenced from:
_emd_evaluate_spline in eemd.o
"_gsl_vector_view_array", referenced from:
_emd_evaluate_spline in eemd.o
"_mexFunction", referenced from:
-exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I am not sure on how to continue further, and I do not the most experience with this, so any help would be greatly appreciated!
Thanks!
0 件のコメント
回答 (1 件)
Walter Roberson
2015 年 12 月 13 日
You probably need to add two parameters to the mex command line. The first would be -L (uppercase L) followed by the name of the directory that holds the gsl libary. The second would be -l (lowercase L) followed by the name of the gsl library. For example it might look something like
mex -I/opt/local/include/ -L/opt/local/lib -llibgsl eemd.c
I am guessing about the appropriate directory and library names here.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!