web-dev-qa-db-ja.com

コンパイルコードと実行可能コードの違いは何ですか?

私は常に用語compilebuildを同じ意味で使用しています。

これらの用語の正確な意味は何ですか?

108
Lazer

コンパイルは、ソースコードをオブジェクトコードに変換する動作です。

リンクは、オブジェクトコードとライブラリを生の実行可能ファイルに結合する行為です。

Buildingは、インストーラー作成などの他のタスクを伴う可能性のあるコンパイルとリンクで構成されるシーケンスです。

多くのコンパイラは、ソースコードのコンパイル後にリンク手順を自動的に処理します。

147

wikipedia から:

コンピューターソフトウェアの分野では、ソフトウェアbuildという用語は、ソースコードファイルを実行可能なスタンドアロンソフトウェアアーティファクトに変換するプロセスのいずれかを指します。コンピューター上、またはその結果。ソフトウェアビルドの最も重要な手順の1つは、ソースコードファイルを実行可能コードに変換するcompilationプロセスです。

simpleプログラムの場合、プロセスはコンパイルされる単一のファイルで構成されますが、複雑なソフトウェアの場合、ソースコードは多くのファイルで構成され、さまざまな方法で組み合わされてさまざまなバージョンを生成します。

17
codaddict

ビルドは、多くのステップで構成されるスクリプトと見なすことができます。主なステップは、コードをコンパイルすることです。その他は

  • 実行中のテスト
  • レポート(例:カバレッジ)
  • 静的解析
  • ビルド前およびビルド後の手順
  • 特定のファイルに対してカスタムツールを実行する
  • インストールの作成
  • それらにラベルを付け、リポジトリに展開/コピーする
8
Gishu

多くの場合、同じことを意味するために使用されます。ただし、「ビルド」とは、アプリケーション全体(CやC++などの場合)をコンパイルおよびリンクする完全なプロセスを意味する場合もあります。

  • 包装
  • 自動(ユニットおよび/または統合)テスト
  • インストーラー生成
  • インストール/展開
  • ドキュメント/サイト生成
  • レポートの生成(テスト結果、カバレッジなど)。

Maven のようなシステムがあり、これはlifecycleの概念でこれを一般化します。前の段階の結果と成果物を使用する可能性があります。

7
Péter Török

私の経験から言うと、「コンパイル」とは1つまたは複数の人間が読み取れるソースファイルをバイトコード(Cのオブジェクトファイル)に変換することを指し、「ビルド」はコンパイル、リンク、その他の必要なプロセス全体を指しますパッケージまたはプロジェクト全体の完了。

5
chris

ほとんどの人はおそらくこの用語を同じ意味で使用します。 1つのニュアンスがあります。コンパイルは、コンパイラ(gcc、javacなど)を介してソースファイルを渡すステップにすぎません。

ビルドは、ソースをチェックアウトし、コンパイルされたアーティファクトのターゲットフォルダーを作成し、依存関係をチェックし、コンパイルするものを選択し、自動テストを実行し、tar/Zip /配布を作成し、ftpにプッシュする、より一般的なプロセスとして聞くことができますなど.

2
phtrivier