UNIXではCOFF実行ファイルを、WindowsではELF実行可能ファイルを実行できますか? WindowsとUNIXのどちらのファイルタイプでも実行できる手順は何でしょうか。私はちょうど興味がある。Linuxの場合はCOFF、Windowsの場合はELF
答えて
実際に実行可能ファイルを実行して有用なものを作成するには、実行可能ファイル形式だけでなくAPIについても心配する必要があります。 WINEがインストールされたLinuxマシンでは、コマンドラインからWindowsの.EXEファイルを実行することができ、Windowsの場合と同じことを実行します。
CYGWINをWindowsマシンにインストールしてから、CYGWINコンパイラを使用してアプリケーションをソースから再構築すると、Windows上で実行される実行可能ファイルが生成され、同じことが実行されますLinuxの実行ファイルはLinux上で動作します。多くの標準的なLinuxツールは、X-WindowsやGIMPなどのCYGWINリポジトリに移植されています。
私が別の答えでコメントしたように、http://sf.net/projects/line/はWindows上で修正されていないLinuxバイナリを実行してWINEの逆であるようにしようとしました。このプロジェクトは何年も前から放棄されましたが、概念が可能であることは間違いありません。私が正しくリコールすれば、いくつかの静的にリンクされたコンソールプログラムを実行することができ、IPCが動作していました。 – ephemient
COFFはもともとUNIX(System Vまたはその周辺)によって導入されていたので、ある種のUNIXはおそらくまだCOFF形式をサポートしています。それはLinuxによって少なくともしばらくは非難されており、おそらく他のほとんどのUnixもサポートを非難または完全に落としました。
Windows ELFサポートはもう少しですiffy - ほとんど確かにそこには深いトリッキーなことはありません。ここで何をしようとしているのかを具体的に説明する必要があります。
http://sf.net/projects/line/は、Windows上でELF実行可能ファイルを読み込むことができました。これは動機付けされた人にとっては良い出発点になるかもしれません。 – ephemient
http://lbw.sourceforge.net/は、行よりも優れています。 同じことをするための別のプロジェクトは低かったが、それはあまり効果がなかった。
EDIT:http://atratus.org/はInterix/SFUを持つ必要はなく、同じように見えます。
質問に正しく答えるには、ELF、COFF、およびPEの内容を確認することが重要です。これらのバイナリ形式は、本質的に単なるコンテナであり、ファイルに含まれる未処理のCPU命令をどのように実行するかについてオペレーティングシステムに指示を与えます。それらは、MKV、WMV、OGGなどのオーディオ/ビデオコンテナに非常に似ています。実行可能形式のサポートは、オペレーティングシステムにあるかどうかです。 Microsoft Windowsは、最近までCOFFやELFのサポートを一貫して提供していません。 Windows 10では、MicrosoftはWindowsカーネルのUserMode-Linux互換システムルーチンを組み込むことにより、ELFの間接的なサポートを提供しています。 UserMode Linuxカーネルは、Windowsカーネルの上で実行され、ELFバイナリ形式をMS Windowsとは独立して実行しているかのように実行します。
Linux用のLinux(サブカーネル)を使用する代わりに、大部分のLinux APIを完全に互換性のある形式で書き換えることができます。その選択肢は、APIです。 "A"はApplicationを表し、 "I"はInterfaceを表しますが、インターフェースとしてのAPIは主に実行可能なルーチンと環境の仮定のセットです。ファイルシステムと最も基本的なシステムルーチンへのアクセスはWindowsカーネルによって提供され、それ以外のものはUserMode Linuxカーネルで提供されます。これにより、WindowsはELF形式の実行可能ファイルを実行できるだけでなく、既にLinux API上で実行されている最も一般的なELF実行可能ファイルを実行することができます。
LinuxのPE(ほとんどのMicrosoft Windows実行可能ファイル)を実行している質問の反対側の部分も可能です。 MSIL(仮想マシンアプリケーション)とWin32(通常のCPUアプリケーション)を実行できるランタイムラッピングライブラリは2つあります。 Linuxカーネルは特定のバイト形式を認識できるように拡張可能であるため、適切なラッパープログラムを実行するため、カーネルはPEと実行可能なコンテナ形式をサポートします。したがって、Linuxはモノラルランタイム(.NET/C#アプリケーション)またはWINEランタイム(Win32 C/C++)のいずれかでPEプログラムを実行できます。
UserMode-Linux環境をインストールするには、Microsoft's Development Networkの指示に従います。要約すると:
- 開発者モードを有効にする:設定|アップデート&セキュリティ|開発者向け| 「Windowsの機能のオンまたはオフ」ダウン
- スクロールして、「Linux用のWindowsサブシステム(ベータ版)」機能
- 大丈夫ヒットし、再起動(必要性をご確認くださいオープン、スタートメニューから、開発者モード]ラジオボタン
- をチェックステップ1
- PowerShell /コマンドプロンプトを開き、 "Bash"を実行し、簡単な指示に従ってCanonicalのライセンスを受け取り、Ubuntuイメージのダウンロードを開始します。
- ダウンロードが完了したら、スタートメニューから「WindowsでUbuntuでBashを起動する」
この方法はWindows 10でのみ機能し、テキストモードのコンソールと、vcXsrvのようなXorgのWin32ポート(グラフィカルなもの)に限ります。 CygwinまたはMSYS2システムはELFバイナリを実行することはできませんが、通常はLinuxシステム上のELFバイナリと同じアプリケーションを移植して実行することができます。
私は質問の残りの半分に答えていたはずです。 LinuxでPE(Windows実行可能ファイル)を実行するには、さまざまな手段があります。Linuxカーネルは特定のバイト形式を認識できるように拡張可能で、適切なラッパープログラムを実行するためです。したがって、Linuxはモノラルランタイム(.NET/C#アプリケーション)またはWINEランタイム(Win32 C/C++)のいずれかでPEプログラムを実行できます。 –
- 1. Javaスレッド:Windowsの場合とLinuxの場合
- 2. Linuxの場合はsyslog_r?
- 3. Windowsの場合はphp-fpm?
- 4. Javascript:OS-Detection ... Linuxの場合
- 5. の場合、$ GETの場合は
- 6. キー値データベースWindowsの場合?
- 7. ユーザーモードの同期とカーネルモードの同期(LinuxとWindowsの場合)
- 8. msbuild.exeの場所はVS2012でwindows 8の場合
- 9. Windowsの改行(Windowsの場合)
- 10. 他の場合は、
- 11. 色:背景がDARKの場合は白、LIGHTの場合はBLACK
- 12. スカラーの場合はarray_replace_recursive、配列の場合はarray_merge_recursive
- 13. バイナリファイルは、WindowsよりLinuxの場合よりも小さくなります。
- 14. NG-場合は、チェックは、配列が空の場合
- 15. Python:nullの場合は0、そうでない場合は1
- 16. 基本C++の場合は/その他の場合
- 17. 「これ以外の場合はこれ以外の場合」
- 18. Eclipse CDT + Windowsの場合: "ダミー"のインストール
- 19. NETFX_COREがWindows 8の場合、Windows Phone 8は何ですか?
- 20. WPF Save DialogBox(Windows 64の場合)
- 21. InkEdit throw OverflowException Windows 7の場合
- 22. 権限昇格Windows 7の場合?
- 23. AjaxCompleteは、多くの場合、
- 24. 空の場合はJquery
- 25. タイムアウトフォールバックの場合はアンドロイドphonegap
- 26. else文の場合はPexpect
- 27. 私の場合は、列
- 28. NULL文の場合はPHP
- 29. lapackeまたはclapackでlinuxのc/C++でプログラミングする場合
- 30. Linux環境(私の場合はXUbuntu)でコマンド
[UNIXベースアプリケーションのサブシステムの概要](http://technet.microsoft.com/en-us/library/cc771672.aspx#BKMK_PortAppsSUA)[http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX] (http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX) – abmv
SFA/SUAは、NT向けにコンパイルされたPE実行ファイルのみを実行します。 – ephemient