FreeBSD初心者運用日記 このページをアンテナに追加

2008-04-09

[]メモ 07:49 メモ - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - メモ - FreeBSD初心者運用日記 メモ - FreeBSD初心者運用日記 のブックマークコメント

  • 単にmakeと入力して実行した場合、makeMakefileの一番最初に書かれたターゲットがそれを作成するために必要なコンポーネントとともに作成されます。
  • ルール行とコマンド行は同じ行にかくことができます。
    • program : program.o; cc -o program program.o
  • 同じターゲットが複数のルール行に存在することもできます。
    • 例:ターゲットhogeのコンポーネントが、Cのソースとヘッダーファイルとある場合、ソースとヘッダファイルで別の依存関係行を作成することができる。
  • ルール行で、コンポーネントを書かないこともあります。たとえば、↓。
clean:
    /bin/rm -f core *.o
  • make cleanで上記のエントリが実行されます。
  • makeで使用する定数ともいうべきものに、マクロがあります。マクロは文字列を展開します。
  • マクロにはあらかじめ定義されているものがあります。${CC}や${LD}です。それぞれCコンパイラ、リンカとしてmakeに認識されます。-pオプションで内部定義されたマクロを表示してくれるらしい!?
  • シェル変数はメイクファイルの中からマクロとして参照することができます。
  • マクロ参照の優先順位について
    • メイクファイルから参照できるマクロとして4つものがあります。シェル変数、コマンドライン上で設定したマクロ、内部定義されたマクロ、そしてメイクファイルの中で定義したマクロです。これらのマクロはmakeから参照される優先順位があります。シェル変数を優先的に使いたい場合は、make -e testという感じで実行するとよい。

2008-04-03

[] 22:15 2008-04-03 - FreeBSD初心者運用日記 を含むブックマーク 2008-04-03 - FreeBSD初心者運用日記 のブックマークコメント

make program

と書いた場合、programにあたるものをターゲットと呼びます。

ターゲットを作るために必要なファイルをコンポーネントと呼びます。

以下のファイルから、実行形式プログラムprogramを作成する場合を考えてみます。

・main.c

hoge.c

・foo.c

lo.s

・/usr/lib/bar.a

この場合、以下の手順で作業します。

$ cc -c main.c
$ cc -c hoge.c
$ cc -c foo.c
$ as -o lo.o lo.s
$ cc -o program main.o hoge.o foo.o lo.o /usr/lib/bar.a

この場合、ターゲットがprogramになります。programのコンポーネントは、以下のファイルです。

main.o hoge.o foo.o lo.o /usr/lib/bar.a

上記の手順をMakefileを使って書いてみます。

$ vi Makefile
program : main.o hoge.o foo.o lo.o /usr/lib/bar.a
    cc -o program main.o hoge.o foo.o lo.o /usr/lib/bar.a
main.o : main.c
    cc -c main.c
hoge.o : hoge.c
    cc -c hoge.c
foo.o : foo.c
    cc -c foo.c
lo.o : lo.c
    as -o lo.o lo.s

このMakefileでは5つのエントリがあり、それぞれのエントリにルール行とコマンド行があります。

ルール行はコロンを含んでいる行です。依存関係を表します。

コマンド行は先頭がタブで始まる行です。コンポーネントからターゲットを作り出す方法を書きます。

2007-11-03

[]インクルードファイルの場所を指定 06:00 インクルードファイルの場所を指定 - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - インクルードファイルの場所を指定 - FreeBSD初心者運用日記 インクルードファイルの場所を指定 - FreeBSD初心者運用日記 のブックマークコメント

CFLAGS = -I/usr/X11R6/include

[]ライブラリの指定 06:00 ライブラリの指定 - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - ライブラリの指定 - FreeBSD初心者運用日記 ライブラリの指定 - FreeBSD初心者運用日記 のブックマークコメント

場所を指定

-L/usr/local/lib

ライブラリファイルを指定

-lm

※ この場合、libm.aを指定したことになる。