タグ

makeとmakefileに関するrin51のブックマーク (10)

  • Linux Kernel の Makefile を解析する その1

    Linux Kernel の Makefile がどういう仕組みになっているのか前から知りたいと思っていました。 O'REILLY の 「GNU Make」 というの11章に Linux Kernel の makefile について少し解説があります。 もちろん makefile の仕組み全体は説明してないのですが、いくつかの興味深いトピックについて解説されていて、一読の価値があります。 まずはトップの Makefileの大枠から見てみます。 これは O'REILLY で解説されています。 トップのMakefileの100行目付近は以下のようになっています。(途中、あんまり関係ない部分は省略しています。) ifeq ($(KBUILD_SRC),) # OK, Make called in directory where kernel src resides # Do we want

    rin51
    rin51 2021/07/09
    KBUILD_OUTPUTについて
  • LinuxカーネルのMakefileを解析する その6

    に注目します。これが、これから降りていこうとするトップ階層のディレクトリ達です。 さらに700行目付近に以下のように書いてあります。 core-y        += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ vmlinux-dirs    := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ $(net-y) $(net-m) $(libs-y) $(libs-m))) vmlinux-alldirs    := $(sort $(vmlinux-dirs) $(patsubst %/,%,$(filter %/, \ $(init-n) $(init-) \ $(core-n) $(cor

  • GNU make変数の伝播についてまとめ - Qiita

    がある。前者はシェルによって解釈され、後者はmake自身が解釈するのだが、実行にどう違いが出るのか? Makefile内で変数の書き方は

    GNU make変数の伝播についてまとめ - Qiita
  • Makefileの書き方 - $ cat /var/log/shin

    まえがき その昔、Makefileの書き方という非常にわかりやすいMakefileの入門ページがあったのですが、seiichirou氏の卒業(?)とともにページが消えてしまいました。 私も大変お世話になったページだった、というかこれからもお世話になりそうなので、そこでWebArchiveから引っ張りだしてきたものを、はてな記法で書き直したものがこの記事になります。 元々自分用に書き直したのですが、せっかくなので公開してみます。 なので、以下の著作はseiichirou氏に帰属します*1。 Makefileの書き方 はじめに ここでは、Makefileの中でもGNU makeにかぎって説明します。 makeって何? ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の

    Makefileの書き方 - $ cat /var/log/shin
  • BSD make vs. GNU make

    Chuck Swiger cswiger at mac.com Tue Apr 17 17:05:27 UTC 2007 Previous message: BSD make vs. GNU make Next message: BSD make vs. GNU make Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] On Apr 17, 2007, at 9:28 AM, Soo-Hyun Choi wrote: > This might be a dumb question, but would like get a clear idea about > the differences between BSD make and GNU make. Why do I have to do > 'gmake'

    rin51
    rin51 2018/01/14
    GNU拡張
  • 子makeを使うときの注意点

    cd sub && makeとcd sub && $(MAKE)の違い $(MAKE)をつかうと,コマンドラインに指定したmakeと同じ値が使われることが保障される. 例えば,あるMakefileがその中で別の子makeを呼ぶような場合,make -nとした場合に, 子makeの方もmake -nになってほしい. また,make VER=12とした場合に,子makeの方もマクロ定義VER=12が引き継がれてほしいはず. これを実現するためには,$(MAKE)とかいておかなければならない (直にmakeと書いた場合,当然 子makeにコマンドライン引数の-nやVER=12は引き継がれない). -C,-f,-o,-Wなど一部のオプションは子makeには引き継がれない仕様になっている. また,-jは特殊な引き継ぎ方をするようになっている. MAKEFLAGS makeを実行時に指定した引数が自動

    rin51
    rin51 2018/01/09
    > $(MAKE)をつかうと,コマンドラインに指定したmakeと同じ値が使われることが保障される[...](直にmakeと書いた場合,当然 子makeにコマンドライン引数の-nやVER=12は引き継がれない)
  • C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD

    私は多くの小規模プロジェクトで Make を使ってきましたが、より大きな規模のプロジェクトになると、それは非常にうんざりするようなものでした。最近までは、自分のビルドシステムに行いたいことが4つあったのですが、Makeでの方法が分かりませんでした。 out-of-sourceビルド(オブジェクトファイルが、ソースとは分離されたディレクトリにダンプ出力されます) 自動生成される(かつ正確!)ヘッダの依存関係 オブジェクト/ソースファイルのリストの自動的な決定 インクルードディレクトリのフラグの自動生成 以下にこれらの全てを行える、C、C++、およびアセンブリで動作するシンプルなMakefileを紹介します。 MAKEFILE TARGET_EXEC ?= a.out BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(S

    C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD
  • ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - - make の仕組みを理解する

    前述*1のように Makefile は非常に簡潔に記述できます.ただし,簡潔なMakefileを記述するためには make の仕組みを理解する必要があります. 結論から言うと, make は 簡潔な生成ルールのみを記述したMakefileから, 実際に必要となる詳細な生成ルールを自動的に生成します. 自動的に生成されたルールを確認するには $ make -p と "-p" オプションを付けて make を実行します. 以下, hoge.c から hoge を生成する場合 hoge.c と fuga.c から hoge を生成する場合 の二つの具体例を挙げて,説明します. 前準備 Makefile と hoge.c を用意します. Makefile all: hoge hoge.c int main() { return 0; } make -p の実行 $ make -p > log 大量

    ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - - make の仕組みを理解する
  • Makefile は簡潔に書きましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    仕組みが判ってしまえば Makefile は簡潔に書けます.$(CC) とか $@ とか $< なんて変数は使ったら負けです. 基(その1) ソースコード hoge.c から 実行形式のバイナリ hoge を生成するMakefileは,以下のように書きましょう all: hogeこれだけです.これで $ make all とすると hoge が生成されます 重要な点は,間違っても all: hoge hoge: hoge.c $(CC) hoge.c -o hogeのようなMakefileを書かないことです.このようなMakefileでは #!/bin/sh CC=gcc $CC hoge.c -o hoge というようなシェルスクリプトと同程度の使い勝手しかありません. 基(その2) ここで例えば-O3 を付けてコンパイルしたい場合や,-lm を付けてリンクしたい場合は以下のようにし

    Makefile は簡潔に書きましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • トリビアなmakefile入門

    make/makefileは,大きいプログラムのどの断片が再コンパイルされる必要があるかという事と,それらを再コンパイルする発行コマンドを自動的に決定するユーティリティ/設定ファイルです. コンピュータサイエンスの基的な考え方のひとつに冗長性をなくして効率化する構成を追及するというのがあります. 情報理論(bitの理論),HTMLとブラウザ,高級言語と機械語など,ひとつの仕様(表現)から環境や状況にあわせて実装(記述)をつくりだす構成が好まれます. ひとつのファイルでさまざまなコマンドを制御するmake/makefileを制することはコンピュータサイエンスを制することになります. makeのあれこれ もっとも単純な例 Makefile は以下のようなルールからなる.

  • 1