62622


Linuxのソースからパッチをあてる際の各コマンドが同じ様なもので具体的に何をしているのかイメージがつきません。  
例えば、`tar.xz`のファイルを解凍してtarで固められたファイルを展開する、ところまではイメージがつきます。  
その後、

  1. `./configure`
  2. `make`
  3. `su` （必要に応じて）
  4. `make install`

とやると思いますが、これらは何をやっているかイメージを教えてください。


CC BY-SA 4.0
2020-01-29T01:51:19.600
62619
2020-01-29T05:36:53.350
2020-01-29T02:28:21.887
19110
31472
question
linux makefile
ビルド時に行う configure と make の動作イメージがつきません。


典型的には、[Autotools](https://ja.wikipedia.org/wiki/Autotools)
というツールを使ってインストールの流れが作られた場合に見られる手順です。

  * `./configure`：ビルド用の環境を作ります。  
たとえば環境変数を確かめたり、ビルドに必要なバイナリやライブラリが存在しているかチェックしたり、Makefile を作ったりします。

  * `make`：ソースコードをビルドしてバイナリを作ります。  
ここで呼び出されているのは [Make](https://ja.wikipedia.org/wiki/Make)
というビルドツールで、`./makefile`
等のファイルに基づいてビルドを行います。ここで作られたバイナリはまだ今のワーキングディレクトリの下にあります。

  * `make install`：バイナリをシステムへインストールします。  
作ったバイナリをシステム全体で使えるようにするため、システム用のバイナリが置かれているパスへバイナリをコピーします。このとき場合によっては権限が必要なので
`su` や `sudo` が併用されます。たとえば `/usr/bin` へのコピーに権限が必要だったりします。

ソースコードをビルドするだけなら `make` でことたりるのですが、環境による差に対応したり、ビルド用の条件をカスタマイズしたりしやすいように
`./configure` を行っています。


CC BY-SA 4.0
2020-01-29T02:41:38.867
62622
2020-01-29T05:36:53.350
2020-01-29T05:36:53.350
19110
19110
62619
answer