2011-06-25 29 views
6

これはかなり単純な質問です: Windowsオペレーティングシステムでgccを使ってlinuxでコンパイルされたCプログラムを実行する方法はありますか? 私はすでに試したが、Windowsコンパイラは128ビットのネイティブタイプを持っていないように見えるので、ウィンドウの下で再コンパイルするように言ってはいけない。そしてbignumライブラリを使用すると、プログラムは10〜100倍遅くなる。 Windowsの下で実際にLinuxバイナリを実行する方法はありますか? 誰かが私にcygwinについて何か教えてくれましたが、どこから始めるべきか分かりません。 (私のプログラムも移植可能でなければならないので、自分のマシンにプログラムやものをインストールする必要はありません)。Windowsの下でlinux gccコンパイルされたプログラムを実行する

ありがとうございます! Matteo

+0

mingwを試しましたか? – Mat

+0

私はしましたが、__uint128_t ...任意のヒントを認識しませんか? –

答えて

8

直接的な方法はありません。 Linuxの実行可能ファイルはWindowsとは根本的に異なるフォーマットです。他にもいくつかのオプションがあります。

  • cygwin。 cygwinの下でGCCを使ってプログラムをコンパイルしてください。私はそれがCygwinの互換性の層を使用するWindowsのexeを構築すると信じています。

  • VBoxのようなVMをインストールします。 VBoxにLinuxをインストールする。そこでプログラムを実行します。

  • http://www.andlinux.orgには、これを行うためのフレームワークがあります。私はそれを試したことはありませんが、ビデオチュートリアルhttp://www.youtube.com/watch?v=nULDHPCm9p4があります。

+1

cygwinの下でプログラムをコンパイルすると、.exeの同じディレクトリに "cygwin1.dll"のようなファイルを置くと、任意のWindowsコンピュータで使用できる.exeファイルになります。 –

+1

cygwin dllはどこかにあるはずですが、Windowsはそれを見つけることができます。正直言って、私は窓を避け、ちょうどそれを設定するhoweを思い出さない。 –

+0

こんにちは!私はcygwinの下でコンパイルしようとしましたが...! __uint128_t識別子も認識しないようですね! cygwinのバージョンで__uint128_tが導入されたのだろうか?私の現在のcygwin gccバージョンは4.3.4です... –

3

あなたはWindowsの下でそれを再コンパイルする必要があります窓

下に を再コンパイルする私に教えないでください。ごめんなさい!

128ビット整数をサポートするコンパイラが見つからない場合は、Linuxコンパイラが発行する命令を複製するためにアセンブラを使用する必要があります。

0

ホストWindows OS上のゲストOSとしてLinux用の仮想マシンを使用します。 VMの下で実行可能ファイルを実行します。しかし、gcc-cygwinの下でコンパイルするのが最善の策です。

3

それはflinuxができると思います。説明から

...動的バイナリトランスレータが... Windows上で無修正のLinuxバイナリを実行できる...

注:私はこれをテストしていませんでした。

+0

私は、コマンドラインLinuxプログラムを実行するためにFLinuxをテストしました。プログラムを再コンパイルする必要はありません。 – Phil

0

Windows 10周年記念日以降、WindowsはWindows Subsystem for Linux(WSL)(一般にBash on Ubuntu on Windows)としてLinuxバイナリをネイティブに実行できます。

は、インストール後https://msdn.microsoft.com/en-us/commandline/wsl

を参照してください、あなたは、bashのセッションを開く/mnt/<driveletter>/<path to your program>に移動して、あなたがLinuxを実行しているかのように、あなたの実行可能ファイルを実行することができます。

注:WSLはまだベータ版です。

関連する問題