0

私はメイクファイルを書くことについて基本的な考えを持っています。しかし、このメイクファイルを理解するのは難しいと感じています。

SOURCES=boot.o main.o

CFLAGS=-nostdlib -nostdinc -fno-builtin -fno-stack-protector
LDFLAGS=-Tlink.ld
ASFLAGS=-felf

all: $(SOURCES) link

clean:
    -rm *.o kernel

link:
    ld $(LDFLAGS) -o kernel $(SOURCES)

.s.o:
    nasm $(ASFLAGS) $<

私のフォルダには、、、ファイルが含まれていmain.cます。boot.asmlink.ld

Q1. main.oから生成するコマンドが書かれていないのはなぜですか?main.cboot.oboot.asm

Q2. 最後の行は何を意味しますか?

.so:
nasm $(ASFLAGS) $<

Q3 CFLAGSはトップで定義されているが、どこにも使用されていない!? それらはコンパイル時に自動的に考慮されますか?

Q4ソースコードから.oファイルに変換するコマンドがどこにも書かれていません。ただし、メイクファイルは正常に機能し、必要な実行可能ファイルを生成しますか?

4

1 に答える 1

1

Q2: これは(アセンブリ ソース ファイル).oからを生成するルールです。.s

Q1: 今説明したルールに該当するからです。

Q4:.s.oルールがあり、C モジュールをコンパイルするためmake組み込みルールがあります。

.oQ3: aから aを作成するための前述のルールは.c考慮CFLAGSに入れられています。

于 2013-10-14T09:56:02.840 に答える