12-LPIC「level1」

LPIC|level 1【makeコマンド】

目標

  • makeコマンドについて概要を理解する
  • makeコマンドについて利用方法を理解する

makeコマンドの概要

makeコマンドは、複数のソースファイルをまとめてコンパイルする際に、自動的に依存関係を解決して効率よくビルドを行うコマンド(ツール)です。設定ファイルとして Makefile を使用し、ビルドルールや依存関係を記述します。

makeコマンドの利用方法

1. 基本的な流れ

  1. Makefileの作成
    • ビルド対象や依存ファイル、コマンドを記述。
  2. makeコマンド実行
    • make を実行すると、Makefileを参照し、指定されたターゲットをビルド。

2. Makefileの基本構造

対象とするビルド内容が「単純な C プログラム」

gcc を直接呼び出してバイナリを生成する。

  • 単純な C プログラムをコンパイルして実行ファイルを作る。
  • gcc を直接呼び出してバイナリを生成する。

対象とするビルド内容が「カーネルモジュール」

  • Linux カーネルにロードできるモジュール (.ko ファイル) を作る。
  • gcc を直接呼ばず、カーネルのビルドシステムを利用する。

3. Makefile の記述方法

hello.c の例

ターゲット(hello)と依存関係(hello.c)、実行コマンド(gcc)をそのまま書く。

hello: hello.c
    gcc -o hello hello.c

カーネルモジュールの例

obj-m にモジュール名を指定し、-C オプションでカーネルソースのビルド環境を指定。M=$(PWD) で現在のディレクトリを対象にビルドさせる。

obj-m += my_module.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

実行結果の違い

  • hello.c の例 → 実行可能なユーザー空間プログラム ./hello ができる。
  • カーネルモジュールの例 → .ko モジュールができ、insmod や modprobe でカーネルに組み込んで使う。

4. よく使うmakeコマンドのオプション

  • make : デフォルトのターゲットを実行
  • make clean : 中間ファイルや生成物を削除(Makefileにcleanルールを定義しておく)
  • make target : 指定したターゲットをビルド
  • make -jN : 並列ビルドを実行(Nは同時に実行するジョブ数)

5. 便利な使い方

  • 依存関係管理 : ソースコードが更新された場合のみ再コンパイルするため、無駄がない。
  • 複数ターゲット管理 : 実行ファイル、テストコード、ライブラリなどをまとめて管理可能。
  • 移植性の向上 : 異なる環境でも同じMakefileを使えばビルド手順を統一できる。

6. 応用例:カーネルモジュールのビルド

カーネルモジュール開発では、Makefileを用いて以下のように記述します。(項目4で上げた内容)

obj-m += my_module.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
  • make 実行でモジュールをビルドし、.ko ファイルを生成。
  • make clean で生成物を削除。

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
12-LPIC「level1」

LPIC|level 1【パーティションとファイルシステム】

2025年6月1日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site