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

2 ビュー (過去 30 日間)
Michael Mathew
Michael Mathew 2016 年 5 月 26 日
回答済み: Albert Hofkamp 2017 年 11 月 21 日
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 件のコメント
Michael Mathew
Michael Mathew 2016 年 5 月 27 日
編集済み: Michael Mathew 2016 年 5 月 27 日
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 2016 年 5 月 28 日
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.

サインインしてコメントする。

回答 (1 件)

Albert Hofkamp
Albert Hofkamp 2017 年 11 月 21 日
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.

カテゴリ

Help Center および File ExchangeMATLAB Compiler についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by