mkbundle2 の目的は、mono がインストールされていないマシンで mono アプリケーションを実行できるようにすることだと思いました。しかし、libmono.so をパッケージ化していないようです。想定されているかどうかはわかりませんが、バンドルを実行すると、宛先マシンが libmono.so.0 を見つけることができないと不平を言っています。なぜそのファイルを探すのでしょうか? また、必要な場合、バンドル以外の場所を探しているのはなぜですか? それがバンドルにあるはずなのに、なぜ mkbundle2 はそこに入れなかったのでしょうか? すべての依存関係を含めるために「--deps」オプションを使用しています。何か不足していますか?
--static オプションを追加すると、宛先マシンで次の結果が得られます。
未処理の例外: System.TypeInitializationException: System.Windows.Forms.XplatUI の型初期化子によって例外がスローされました ---> System.DllNotFoundException: libc at (wrapper managed-to-native) System.Windows.Forms.XplatUI:uname (intptr) at System.Windows.Forms.XplatUI..cctor () [0x00000] in :0
export MONO_LOG_LEVEL=debug を使用すると、詳細情報が表示されます。
Mono-INFO: DllImport がロードしようとしています: 'libc'。Mono-INFO: DllImport の読み込み場所: 'libc.so'。Mono-INFO: ライブラリのロード中に DllImport エラーが発生しました: '/usr/lib64/libc.so: 無効な ELF ヘッダー'。Mono-INFO: DllImport 読み込みライブラリ: './libc.so'。Mono-INFO: ライブラリのロード中に DllImport エラーが発生しました './libc.so: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません'。Mono-INFO: DllImport の読み込み中: 'libc'。Mono-INFO: ライブラリのロード中に DllImport エラーが発生しました 'libc: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません'。
これは、互換性のないハードウェアを搭載したマシンで実行しようとしているということですか? どちらのマシンも SUSE Linux Enterprise Server 11 (x86_64) です。