ソース ファイルtest.cとそのヘッダーtest.h、ファイルmain.cとmakefile. test.c(1) コンパイルして実行可能ファイルをビルドし、test.o(2) コンパイルtest.cしてアセンブリ コードをtest.susing-Sフラグに出力するようにメイクファイルを設定したいと考えています。
私は正しいと思ったようにメイクファイルをセットアップしようとしましたが、もちろんこれは実際には最後のtest.s行を実行しません。
FLAGS = -c -Wall
CC = gcc
ASM = -S
all : optimize
optimize: main.o test.o
$(CC) main.o test.o -o optimize
main.o: main.c test.h
$(CC) $(FLAGS) main.c
test.o: test.h test.c
$(CC) $(FLAGS) test.c
test.s: test.h test.c
$(CC) $(ASM) -Wall test.c
test.s と test.oの両方を作成するために、これを別の方法で構造化する方法を誰か教えてもらえますか?
optimize:行と次の行を次のように変更しようとしました。
optimize: main.o test.o test.s
$(CC) main.o test.o test.s -o optimize
しかし、リンカーはエラーを出しましたmultiple definition of 'test'。