Compiling mex file that depends on external libraries with extension .so.n

22 views (last 30 days)
I have written a file myprog.cpp and is to be compiled in MATLAB. The program has external library dependencies libnewfile1.so and libnewfile2.so.3. I compiled using following instruction from MATLAB command window.
mex myprog.cpp -lnewfile1.so -lnewfile2.so.3 -L"path to library folder"
I get he following error while compiling.
Error using mex
/usr/bin/ld: cannot find -lnewfile1
/usr/bin/ld: cannot find -lnewfile2.so.3
collect2: error: ld returned 1 exit status
Could anyone please tell me how to compile a cpp file that has external library dependencies?
Later I tried adding the path to LD_LIBRARY_PATH using setenv and getenv shows the above path in LD_LIBRARY_PATH. But still I get the same error.
  3 Comments
Michael Mathew
Michael Mathew on 27 May 2016
Edited: Michael Mathew on 27 May 2016
No I still get the error:
Error using mex
/usr/bin/ld: cannot find -llibnewfile1.so
/usr/bin/ld: cannot find -llibnewfile2.so.3
collect2: error: ld returned 1 exit status
Michael Mathew
Michael Mathew on 28 May 2016
I did solve it. The problem was Matlab does not recognise libraries with extensions other than .so; Hence I renamed the library to .so and that solved the issue.

Sign in to comment.

Answers (1)

Albert Hofkamp
Albert Hofkamp on 21 Nov 2017
Bit late to the party, but the answer is that -l adds a "lib" prefix and a ".so" suffix to its argument, so linking with -Lpath/to/library/dir -lnewfile1 -lnewfile2 will do the trick.
Note that Matlab may add requirements to library-files such as position-independent code, which may or may not have been used while compiling the library.

Categories

Find more on Write C Functions Callable from MATLAB (MEX Files) in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!