https://ja.wikipedia.org/wiki/COFF
https://ja.wikipedia.org/wiki/Executable_and_Linkable_Format
1) Windows上ではCOFFというフォーマットが使われているそうなのですが、cygwinのgccでビルドされる実行バイナリはELFフォーマットなのでしょうか?
2) cygwinでビルドされる実行バイナリがELFフォーマットだとすると、Windows上でELFフォーマットを実行するのはどのように行われているのでしょうか?
i) ELFフォーマットをWindows上で実行することは可能なので問題なし。
ii) ELFファイルを作成する際にリンクされるライブラリが互換を担保している。
iii) ELFファイルを実行する際に、cygwinのモジュールが互換性を担保している
iv)その他
3) Ubuntsu On WindowsではUbuntuのバイナリがそのまま実行できたと思いますが、UbuntuのELFファイルとcygwinのELFファイルは何か違いがあるのでしょうか?
コメント(2件)
Cygwin 用の実行バイナリは ELF ではなく COFF フォーマットだったかと思います。
今、Cygwin 入れていないので確認できないですが Cygwin の gcc でコンパイルした実行バイナリは cygwin1.dll をリンクしていたかと思います。
<参考情報>
■ Cygwin
https://www.cygwin.com/
> a DLL (cygwin1.dll) which provides substantial POSIX API functionality.
勉強になりました。