現在 make を呼び出すと、次のことが実行されていることがわかります。
cc x.c -o x
私が見たいものは次のとおりです。
cc -ggdb3 -O0 -std=c99 -Wall -Werror x.c -l<lib> -lm -o x
または多分
clang -ggdb3 -O0 -std=c99 -Wall -Werror x.c -l<lib> -lm -o x
明らかに毎回入力できますが、makeを使用するときは、これらのパラメータと一緒にccを使用することをお勧めします。
どこかにmake設定ファイルがありますか?
答え1
make
具体的には、次の場合は変数が使用されます。
CC
使用する C コンパイラを指定します。CFLAGS
コンパイラに渡す C コンパイラフラグを指定します。LDLIBS
追加するライブラリを指定します。 (通常、Makefile
プログラムのすべてを定義するライブラリを実際に作成する必要がありますが)必要ビルド(通常はライブラリを含む)。
だからあなたは走るでしょう
make CFLAGS="-ggdb3 -O0 -std=c99 -Wall -Werror" LDLIBS="-lm" x
得るために
cc -ggdb3 -O0 -std=c99 -Wall -Werror x.c -lm -o x
そして
make CC="clang" CFLAGS="-ggdb3 -O0 -std=c99 -Wall -Werror" LDLIBS="-lm" x
得るために
clang -ggdb3 -O0 -std=c99 -Wall -Werror x.c -lm -o x
環境で変数を設定することもできます(シェル起動スクリプトでデフォルト設定可能)。
export CFLAGS="-ggdb3 -O0 -std=c99 -Wall -Werror"
make LDLIBS="-lm" x
あなたの場合にaが欠けていることを考えると、Makefile
次のようになります。このMakefileはコンパイラを指定せずにどのようにCプログラムを生成しますか?興味深い!これGNU製作マニュアルそれも役に立ちます。