C言語のビルドプロセスから理解する"./configure", "make" ,"make install"
Kakasiのインストールをしていて、 そういえば./configure
, make
,make install
って何しているのかちゃんと分かってないなあと思ったので調べたことをまとめた。
C言語本格入門 ~基礎知識からコンピュータの本質までを参考にさせて頂きました。
前提知識
C言語のソースコードはそのままでは実行できない
[種田元樹 (2018) . C言語本格入門 ~基礎知識からコンピュータの本質まで 技術評論社 図1-7より引用]
ビルドとは何か
C言語の移植性
Cランタイムとlibc
- C言語のソースコードを実行する環境の差異を吸収する
- CランタイムはC言語で書かれたプログラムを実行するための情報を持つファイル
- libcはC言語で書かれたプログラムを実行するためのライブラリ
- 実行ファイル=機械語のファイル+Cランタイム+libc
Q&A
Q. ./configure
すると何が起こるのか?
- 実行環境の情報を元にMakefileを作成する
Q. なぜ ./configure
する必要があるのか?
- C言語の移植性はCランタイムやlibcによって担保されているから
Q. make
すると何が起こるのか?
- ソースコードのビルドが行われる
Q. なぜmake
する必要があるのか?
- ソースコードの実行ファイルを生成しないとプログラムを実行できないから
Q. make install
すると何が起こるのか?
- makeで生成された実行ファイルをインストールする (指定のディレクトリにコピー)
Q. なぜmake install
する必要があるのか?
- 対象の実行ファイルを呼び出しやすくするため