Linuxで C++ プログラムをコンパイルしました。
make -f mymakefile
これにより、実行可能ファイルa.out
が生成されます。この実行可能ファイルは、Windowsコマンドプロンプトでは実行できないようです。
LinuxのプログラムをWindowsでネイティブに実行することはできません。それらは完全に異なるオペレーティングシステムです。
ただし、プログラムを実行する方法はいくつかあります。
確かに、プログラムの性質とその依存関係によっては、追加のソフトウェアや ソースコード への変更を加えない限り、別の環境で実行できない場合があります。
Windows(WSL)用のLinuxサブシステムとLinuxディストリビューションが必要です。 Windowsストアには、WSLがあらかじめパッケージ化されたLinuxディストリビューションがいくつかあります。 Ubuntuはかなり人気がありますが、すでにLinuxシステムが構築されているため、a.out
、それを一致させるのが最も簡単かもしれません。
Linuxディストリビューションと一致しない場合、およびa.out
はそのままでは機能しません。WSLディストリビューションでmake
を再実行することもできます。
上記の回答はほとんどの側面をカバーしていましたが、偶然にも提案された flinux (外部Linuxと呼ばれることもあります)に遭遇したかどうかはわかりません here より簡単かもしれません達成しようとしていることに応じた回避策。
(私はWSLを持っていて、エミュレーターとVMでたくさん働いています、そして私は実際にはエクスプローラーの他の回避策を持っていません:))
外部LINUXは、動的バイナリトランスレータであり、Windowsプラットフォーム用のLinuxシステムコールインターフェイスエミュレータです。ドライバーやシステムに変更を加えることなく、変更されていないLinuxバイナリをWindowsで実行できます。これは、Cygwinや他のツールとは対照的に、WindowsでLinuxアプリケーションを実行する別の方法を提供します。現在、多数のコンソールアプリケーションと一部のGUIアプリケーションが実行されています。
Linux上のWindows用にクロスコンパイルできます。
https://stackoverflow.com/questions/2033997/how-to-compile-for-windows-on-linux-with-gcc-g を参照してください
これにより、Linuxを使用して、Windowsで実行されるバイナリ実行可能プログラムをコンパイルできます。
仮想マシンの実行に似ているが、まったく同じではない別のオプションは、Dockerコンテナーからアプリケーションを実行することです。
はい、Docker for WindowsはVM=バックグラウンド(HyperV上のMobyLinuxVM))を使用しますが、次のようなことができます:
$ docker run a.out
コンテナを自動的に停止します。また、使用するリソースも少なくなり、出力はcmdやPowerShellなどのWindows独自の端末から読み取ることができます。
この状況のdockerfileは次のようになります。
FROM docker pull ubuntu:latest
RUN make -f mymakefile
私は個人的にこれがWindowsでLinuxアプリケーションを実行するための最も良い解決策だと思います
この特定のケースでは、私はmingwを使用してWindows 8にgccをインストールしていました。
次に、mingwフォルダーのパスをシステムパスに追加します(コントロールパネル/システム/高度なシステム設定から)。
次に、Linuxと同じようにコマンドプロンプトでgccを実行します。