現在、C# プログラムを Linux で実行しようとしています。Linux マシンで mono を使用すると、プログラムは正常に動作します。だから私はmkbundleを使用し、それはすべて正しくコンパイルされました。しかし、バンドルされたプログラムを他の Linux マシンで実行しようとすると、次のエラーが発生します。
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the
type initializer for System.Windows.Forms.XplatUI --->
System.TypeInitializationException: An exception was thrown by the type initializer for
System.Drawing.GDIPlus ---> System.DllNotFoundException: libgdiplus.so.0
これは、私が使用した mkbundle コマンドです。
mkbundle --static program.exe --deps -o a.out
また、mkbundle2 を使用してみましたが、うまくいきませんでした。
mkbundle を使用してライブラリを具体的に含める方法があるのではないかと考えました (libgdiplus の場所を伝えるなど)。mkbundle を使用するときにリンクする必要がありますが、他の Linux マシン (mono を実行していない) でプログラムを実行すると、このエラーが発生するため、そうではないと思います。
どちらのマシンも Ubuntu 10.10 AMD64 を実行しています。