2016-05-02 11 views
1

メイクファイルからスタティックライブラリを作成しようとすると、ライブラリが作成されません。誰でもこれについて何か入力がありますか?このルールでarコマンドを使用するとライブラリが作成されない

all: test.exe 

test.exe: test.o 
    gcc -o test.exe test.o -L. -ltest 

test.o: libtest.a 
    gcc -c test.c 

libtest.a: ABC-test.o 
    ar rcs ABC-test.o 

ABC-test.o: A-test.c B-test.c C-test.c 
    gcc -c A-test.c B-test.c C-test.c 
+1

はtest.o'は、すでに以前のコンパイルから存在し 'ていますか?そうであれば、Makeがlibtest.aを作成する理由はありません。 test.exeにはおそらくlib test.aも必要です。 –

+0

前回のコンパイルでは存在しません。 – Nickname97

+2

コンパイル中にエラーが発生しますか? 'ABC-test.o'のルールは実際には' ABC-test.o'がビルドされないので間違っています。それ以外の場合は、ビルドログを表示してください。 – kaylum

答えて

4

libtest.a: ABC-test.o 
    ar rcs ABC-test.o 

あなたはarにライブラリの名前を渡すのを忘れていました。

libtest.a: ABC-test.o 
    ar rcs libtest.a ABC-test.o 

以上:これを試してみてください

libtest.a: ABC-test.o 
    ar rcs [email protected] $^ 
+0

組み込みルールもあります: 'ARFLAGS:= rcs'' libtest.a:libtest.a(ABC-test.o) ' – user657267

関連する問題