コンパイル静的ライブラリC ++(Linuxカーネル)から.Aファイルを取得していません

ベーカー:

私はある種の静的ライブラリをコンパイルしようとしています:

foo.c
foo.h

私のメイクファイル次のようになります。

foo.o: foo.c
   cc -c foo.c
libfoo.a: foo.o
   ar -rv libfoo.a foo.o

私はちょうど呼んmakeディレクトリから。

しかし、私は.Aファイルを取得しない、.cファイルをコンパイルした.oファイルを提供します。けれども、私は順次正確なコマンドを実行し、.Aファイルを取得することができます。

私はめちゃくちゃだ、それの何かのシンプルな確信しています。私はすべての上を見てきたが、彼らははるかに複雑な私の状況よりしているような例は本当に助けていません。

Yunnosch:

ただ、呼び出しmakeデフォルトでは最初の目標を、使用するパラメータなしでfoo.oそのlibfoo.aを依存(と、なぜそれが当然のはず)しないので、第二のレシピがトリガされることはありません。
結果は、.oファイルが、ありません.Aファイルです。

https://www.gnu.org/software/make/manual/html_node/Goals.html

デフォルトでは、目標は最初のmakefileにターゲット

あなたが同じように利用メイクに強制されている何らかの理由で場合はmake、その後、最初のターゲットはあなたが必要とするものであることを保証するために、メイクファイル内の部品を並べ替えます。

Alernatively、数行後に同じページに記載されているように

あなたは(他の特殊変数を参照してください).DEFAULT_GOAL変数を使用して、メイクファイル内からデフォルトの目標の選択を管理することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=280938&siteId=1