Dynamical linking with mex
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am compiling a C++ program using mex, in Mac OSX. The program is dynamically linked to various libraries. Compiling with g++ using the appropriate -I, -L, -l links works fine and the program runs. Using the same compilation line, with g++ replaced by mex, fails. Compilation is OK but at runtime the dynamical libraries are not found. Does mex use a different dynamical linker, with an environmental variable different from DYLD_LIBRARY_PATH? Or perhaps it uses a different shell (DYLD_LIBRARY_PATH is defined in my bash profile)?
Update:
The relevant part of the code is:
Lflags={['-L',intelroot,'/lib/'],['-L',mklroot,'/lib/']};
(mklroot and intelroot are the absolute paths to the root of the intel and MKL libraries folders).
lflags={'-lm', '-lpthread', '-liomp5', '-lmkl_intel_thread','-lmkl_core','-lmkl_intel_lp64'};
mex(VERBOSE,'-largeArrayDims', INCLUDES{:}, Lflags{:},lflags{:}, SRC{:});
The (MKL) libraries called are in DYLD_LIBRARY_PATH, as set in the Matlab startup file, using setenv (and verified by getenv), since apparently Matlab does not inherit the bash environment variables. The error message is: Library not loaded: libmkl_intel_thread.dylib.
3 Commenti
Dasharath Gulvady
il 21 Lug 2015
MATLAB must be able to pick up files referenced using DYLD_LIBRARY_PATH? What is the error message you are receiving? Does it work fine if you provide the absolute path of the location of the files?
Please note that in order for -L option to work you need to set the run-time library path in Mac:
Risposte (0)
Vedere anche
Categorie
Scopri di più su Write C Functions Callable from MATLAB (MEX Files) in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!