14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【C言語】コンパイルとビルドの違い

Last updated at Posted at 2019-03-05

#コンパイルとは

コンパイルとは、プログラミング言語で書かれたコンピュータプログラム(ソースコード)を解析し、コンピュータが直接実行可能な形式のプログラム(オブジェクトコード)に変換すること。そのためのソフトウェアをコンパイラ(compiler)という。

C言語でもPHPでもPythonでもGOでも、なーーーんでも
プログラミング言語で書かれたコードは機械側は解読できません。

機械が読める言語、すなわち機械語に直す(=翻訳する)必要があります。
オブジェクトコードっていってるのは、この機械語で書かれたプログラムのことです。
この翻訳の作業をコンパイル、翻訳してくれるヤツをコンパイラと呼びます。

###機械語って?
マシン語ともいう。どっちでもOKです。
「0」と「1」で表現される文字の羅列です。

機械語もとい機械語に近い、つまりマシン寄りの言語は低水準言語と呼ばれ、
普段私たちが使ってるプログラミング言語は高水準言語と呼ぶのです。
機械語に近い言語の代表としてアセンブリ言語が挙げられますが、その話は今回割愛。

#ビルドとは

ビルドとは、組み立てる、建てる、築く、作り上げる、などの意味を持つ英単語。ソフトウェアの分野では、プログラミング言語で書かれたソースコードなどを元に実行可能ファイルや配布パッケージを作成する処理や操作のこと。また、組み立てられた実行ファイルなどの特定の版を指す場合もある。

コンパイルして機械が読めるようになったコードをガッチャンコする作業をビルドと呼びます。
コンパイルが終わった(=機械語に変換した)ところで、まだ実行可能ではないんですよ。
実行可能な形式って?.exe形式を想像してもらってOK。

コンパイルの後にはリンクという作業が必要です。
コンパイルしたオブジェクトコードたちをまとめることで実行可能形式になります。
リンクも一応辞書引いときますね。

ソフトウェア開発やプログラミングの分野では、機械語のプログラム(オブジェクトコード)が収められた複数のファイルを結合して実行可能ファイルを生成することをリンクと呼び、その作業を行うプログラムをリンカ(linker)という。一つのファイルにすべてを結合する方式を静的リンク(static link)、実行時に必要に応じて外部のファイルをメモリ上に呼び出す方式を動的リンク(dynamic link)という。

#まとめ

###ビルド = コンパイル + リンク

開発環境でリンクとコンパイルを一気にやってくれることが多いので、
C言語初心者がよく????ってなるところだと思います。

14
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?