前提・実現したいこと
Linux環境にて、Dartのffi.DynamicLinkを使用してCライブラリをopen使用としましたが、openできません。
cライブラリはtest.soでこのライブラリはtest2.soをmakeでダイナミックリンクしております。
test.soは読み込めているのですが、test2.soがありませんとエラーが発生します。
困り果てており、、ご教示よろしくお願いいたします。
発生している問題・エラーメッセージ
invalid argument(s):Failed to load dynamic library(test2.so.16:cannt open shared object file : No such file or directory)
該当のソースコード
言語:dart import 'dart::ffi' import 'dart::io' main(){ var path="/lib/test.so"; final dylib = ffi.DynamicLibrary.open(path); }
試したこと
test.soにtest2.soをダイナミックリンクしないようにすればopenは成功しました。
補足情報(FW/ツールのバージョンなど)
64bit ubuntu18 環境
test.so のリンク時に -rpath-link を指定すれば良いのでは。
http://manpages.ubuntu.com/manpages/bionic/ja/man1/ld.1.html
ご教示ありがとうございます。
test.soを作成時のmakeに-rpath-linkを設定し、test2.soを指定してライブラリを作成してみました。
期待としてはlddでnot Foundが解決されたら。。と思いましたが、依然としてnot Foundでした。※パスはあっております。
下名のライブラリ作成方法がまずいのか、原因がわかっておりません。
それは残念。最後の手段は LD_LIBRARY_PATH でしょうか。
https://qiita.com/developer-kikikaikai/items/f6f87b2d1d7c3e14fb52
LD_PATHをflutterがDynamicリンクするタイミングで設定することで、解決できました。本当にありがとうございました。
回答1件
あなたの回答
tips
プレビュー