PK
パーネルカニック研究所
今日もどこかでkernel panic。
root@pk-lab:~#

gccとは何か

連載ナビ

この連載は「Linuxを使えるようになる」ではなく、「Linuxがどう動いているのか」を理解するための実践シリーズです。

今回は Linuxを理解する 〜 LFSで学ぶLinux内部構造 〜 の Part 3 / 第3回として、仕組みのつながりを意識しながら学びます。

gccはC/C++などのソースコードを機械語へ変換するコンパイラです。

LFSでは中心となる道具です。

この記事でわかること

  • コンパイルの流れ
  • gccの役割
  • 最低限の確認方法

図解テキスト


main.c -> gcc -c -> main.o -> gcc(main.o) -> a.out

この回で実行するコマンド

上から順番に実行すれば、この回の内容を体験できます。

まずはそのままコピペして実行し、次に1行ずつ意味を確認してください。


cat > /tmp/hello.c <<'EOF'
#include <stdio.h>
int main(void){ puts("hello"); return 0; }
EOF
gcc -o /tmp/hello /tmp/hello.c
/tmp/hello

ハンズオン手順

1. ターミナルを開いて、上のコマンドを1行ずつ実行する

2. 出力結果を見て、分かったことを1行メモする

3. エラーが出たら、そのエラーメッセージをそのまま残す

4. 各コマンドが何を確認するためのものかを説明してみる

チェックポイント

  • コマンドが最後まで実行できた
  • 出力の中で重要な値を1つ説明できる
  • 次の回に進む前に、分からない単語を1つ調べた

今回理解できたこと

  • gccはソースを実行可能にする入口
  • オブジェクト生成とリンクの2段階がある
  • ビルド失敗の切り分けがしやすくなる