4

このスレッドここで述べたように、私はmkbundle -o newfile oldfile.exe --static(OS: Ubuntu 11.10 64 ビット、Mono: 2.10.5) を使用して、Apache Web サーバー (OS: Debian GNU/Linux 32 ビット) で実行可能なファイルを作成しています。ここで、oldfile.exeは を使用して C#-Hello-World-Code をコンパイルした結果ですmcs oldfile.cs。元のシステム (Ubuntu を使用) では、ファイルは実行可能です。newfileただし、 Apache Web サーバーを呼び出すたびに、次のエラーが表示されます。

バイナリファイルを実行できません

また、それをするときfile newfileは言う

ELF 64 ビット LSB 実行可能、x86-64、バージョン 1 (SYSV)、動的にリンク (共有ライブラリを使用)、削除されていない

mkbundle が想定どおりに機能した場合は、

... 静的にリンク ...

すべきではないですか?ファイルがサーバー上で実行できない理由を知っている人はいますか? 32bit/64bitだから問題ないの?

4

1 に答える 1

7

mkbundle64 ビットから Mono は 64 ビットの実行可能ファイルを生成し、32 ビット カーネルで 64 ビットの実行可能ファイルを実行することはできません。mkbundle32 ビット バイナリを生成するオプションがないため、32 ビット Mono で実行可能ファイルを生成する必要があるようです (理論的には 32 ビット Mono を 64 ビット システムにインストールできますが、それは簡単ではないため、インストールすることをお勧めします) 。どこかの 32 ビット システム、おそらく VM 内)。

于 2012-02-09T17:40:01.373 に答える