→コンパイル: 機械語とOSの関係に誤解があった。
(→インタプリタ: JIT) タグ: 2017年版ソースエディター |
(→コンパイル: 機械語とOSの関係に誤解があった。) タグ: 2017年版ソースエディター |
||
=== コンパイル ===
ソースコードを
コンパイル型言語は
* [[C言語]]
* [[C++]]
* [[Fortran]]
などがあ
コンパイル型言語では、ソースコードが書かれたファイルと、実行ファイルとは、別のファイルです。
そのためソースコードを変更してもコンパイルしなければ変更が反映されません。
コンパイル型言語の実行ファイルは、機械語で書かれています。
コンパイル型言語のプログラムの実行では、機械語で書かれた実行ファイルをそのまま実行するので処理が高速です。
実行ファイルは、それぞれのハードウェアに合わせた機械語になっています<ref>異なるハードウェアの実行ファイルは、通常は仮想機械環境を使わない限り実行できません。</ref>。
Windowsをターゲットにした実行ファイルをLinuxにコピーしても実行できません<ref>同じハードウェアでも異なったOSで相互に実行ファイルが実行できない理由は、いくつかありますが、実行ファイルの形式の違いとOSの提供するシステムコールの違いが主なもので、この2つを克服した[[W:Wine|Wine]](LinuxでWindowsの実行ファイルを実行可能にする環境)や[[W:Windows Subsystem for Linux|WSL]](WindowsでLinuxの実行ファイルを実行可能にする環境)では異なったOSの実行ファイルの実行を実現しています。</ref>。
実行ファイルから元々のソースコードを取り出すこと ('''デコンパイル''') は一般に困難です。
機械語にはそのハードウェアたいする命令だけが書かれており、ソースコードは機械語には書かれていません。
機械語に変換された実行ファイルは、配布するプログラムのソースコードを秘密にすることが可能というメリットもあります。
プログラムのコードをコンパイルしたファイルを実行ファイルにまとめる前のファイルを'''オブジェクトファイル'''言います。
ソースコード → オブジェクトファイル → 実行ファイルという流れになります。
{{See also|w:機械語}}
=== 違いは? ===
|