08. build system: ソースからバイナリが生まれるまで
LFSの核心は、Linuxを部品ごとにビルドすることです。
この体験で「aptで入るものの正体」が見えるようになります。
toolchainの基本
最小限、次の道具が必要です。
- compiler: gcc
- linker: ld
- build tool: make
- C library: glibc
- binary utility: binutils
図解テキスト
main.c
-> gcc -c main.c (compile)
-> main.o
-> ld / gcc (link)
-> a.out (ELF binary)
-> 実行時に shared library を読み込み
よくあるビルド手順
./configure --prefix=/usr
make
make test
sudo make install
LFSではこの手順を何十回も繰り返し、環境を段階的に完成させます。
なぜ必要なのか
- 依存関係が壊れたときの復旧力が上がる
- 本番で起きるABI不整合の理解が深まる
- ソフトウェア供給チェーンを実感できる
手を動かす
cat > hello.c <<'EOF'
#include <stdio.h>
int main(void) { puts("hello"); return 0; }
EOF
gcc -o hello hello.c
file hello
ldd hello
./hello
つまり何なのか
build systemは、開発者向けの作業手順ではありません。
Linuxそのものを形作る製造ラインです。
今回理解できたこと
- ソースはコンパイルとリンクを経て実行可能になる
- toolchainはLinux基盤を構成する中核要素
- LFSではビルド工程そのものが学習対象になる
コメントを残す