2

FreeBSD OSでプログラムを実行しようとすると、次の結果が得られます。

$ ./myprogram

ELFバイナリタイプ「0」は不明

./myprogram:1:構文エラー: "&"予期しない( ")"を期待)

$ファイルmyprogram

myprogram:ELF 32ビットLSB実行可能ファイル、Intel 80386、バージョン1(SYSV)、

GNU / Linux 2.6.15の場合、動的にリンクされます(共有ライブラリを使用)、

剥ぎ取られていない

プログラムはUbuntuコンピューターのGCCに組み込まれています。私に何ができる?いくつかのビルドオプションを変更して、UbuntuコンピューターでFreeBSD用のプログラムをビルドできますか、それともFreeBSD OSでビルドする必要がありますか?たぶん、実行可能ファイルをFreeBSDによって認識されるフォーマットに変換する方法はありますか?

4

4 に答える 4

8

FreeBSDでは多くのLinuxプログラムを実行できます。http: //www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.htmlを参照してください。

これがうまくいかない場合、最も簡単な解決策は、FreeBSDでプログラムを再コンパイルすることです。

于 2010-03-24T09:09:00.847 に答える
3

brandelfを使用して実行可能ファイルをLinux実行可能ファイルとしてブランド化してみてください(ただし、依存ライブラリをすべてセットアップする必要があります。または、静的にリンクしてみてください。

http://www.freebsd.org/cgi/man.cgi?query=brandelf&apropos=0&sektion=0&manpath=FreeBSD+8.0-RELEASE&format=html

于 2010-04-23T11:02:10.183 に答える
2

2021-06-21:この回答は古くなっています。2021年の時点で、FreeBSDにはLinux®バイナリ互換性が含まれています。これは、「仮想8086モードを有効にするために、i386™固有の呼び出しを過度に使用する」ものを除いて、ほとんどのLinuxバイナリを実行します。


多数のLinuxプログラムをBSDシステムでコンパイルできますが、それらは同じオペレーティングシステムではありません。LinuxとBSDは、技術的にはバイナリ互換ではありません。

最近のBSDには、Linux用のABI(Application Binary Interface)が付属しており、Linuxのsys-callをオンザフライで変換します(WINEの動作の多く)。これにより、パフォーマンスの低下をわずかに抑えながら、BSDシステムでLinuxELFバイナリを実行できるようになります。

そうは言っても、それらは同じオペレーティングシステムではなく、ターゲットシステムにアクセスするか、クロスコンパイルの方法を使用して、ターゲットシステム用にコンパイルするのが最善の策です。

于 2010-03-24T09:11:29.157 に答える
1

brandelf-t"Linux"とそれは動作するはずです。

于 2015-02-28T06:16:59.240 に答える