私は mkbundle を使用しており、Isis2 を使用する小さなプログラム IdaTester の組み込みバージョンを作成しようとしています。そのシステムは、MonoPosixHelper に依存する Mono の機能を使用します。
私の問題は、mkbundle が依存関係を認識せず、~/bin/lib/libMonoPosixHelper.so に対して動的にリンクする必要がある実行可能ファイルになってしまい、この実行可能ファイルをシステムに移動すると問題が発生することです。 Monoがインストールされています。実際、バンドルには、静的にリンクする必要があるものの 1 つが欠けています。
私の実行可能ファイルは機能しますが、動的ライブラリが「適切な場所」にあるマシンでのみ実行することを確認した場合に限ります。これは、組み込み実行可能ファイルの目的を無効にします...私は、このプログラムを、どこにでも置いてバイナリとして起動できる一種のサーバーとして人々に渡すことができることを望んでいました。これが機能するためにライブラリをインストールする必要がある場合は明らかです、サーバーは完全にスタンドアロンではありません!
プログラムが依存する dll ファイルを mkbundle に強制的に含める方法はわかりましたが、MonoPosixHelper は dll として存在しません。これは Linux 専用のライブラリであり、共有ライブラリとしてのみ存在します。バンドルを静的に埋め込むように「強制」する方法を知っている人はいますか?
これが役立つ場合、私の小さなコンパイル スクリプトは次のとおりです。
mcs -debug+ IdaTester.cs Isis.cs -r:System.dll -r:Microsoft.CSharp.dll -r:Mono.Posix.dll
mkbundle --static -o IdaTester IdaTester.exe --deps
次に、IdaTester を実行します。これは、libMonoPosixHelper ライブラリが見つかるプラットフォームでは機能しますが、libMonoPosixHelper がインストールされていないプラットフォームで実行している場合、そのライブラリを動的にロードしようとすると実行時に失敗します...