0

さらに先に進むには、既存の Makefile の表示を変更する必要があります。

現在私は使用しています:

~/Linuz/src: 1.c, 2.c, 3.c ...

~/Linuz/inc: abc.h, xyz.h

そしてmakefileは次の場所にあります:~/Linuz/some_other_dir/

しかし、構造を変更する必要があります。

  1. ~/Linuz/src/(と~/linuz/inc)からライブラリを作成したい
  2. ライブラリは、実行可能ファイルを取得するために使用されます。アプリケーション ソース ファイル (.c ファイル) は次の場所にあります。~/Linuz/app/
  3. ~/Linuz/bin/すべてのオブジェクト ファイルと実行可能ファイルを格納するために、コンパイル中に作成する必要があります。

助言がありますか ??

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

all: Library.a

%.o: ../src/%.c

    $(CC) $(CFLAGS) -I../inc/ -c -o $@ $^

Library.a:  $(SRC_DIR)/1.c $(SRC_DIR)/2.c $(SRC_DIR)/3.c $(SRC_DIR)/4.c $(SRC_DIR)/5.c

    $(CC) $(LDFLAGS) -o $@ $^

all: prog

%.o: ./*.c

    $(CC) $(CFLAGS) -ILibrary.a -c -o $@ $^


prog:   $(APP_DIR)/app1.c $(APP_DIR)/app2.c $(APP_DIR)/app3.c

clean:
    rm -f *.o my_program
4

1 に答える 1

2

コード アーキテクチャが次のようになっているとします。

└── linuz
    ├── app
    │   ├── app1.c
    │   ├── app2.c
    │   └── app3.c
    ├── bin
    ├── inc
    │   └── any.h
    ├── some_other_dir
    │   └── Makefile
    └── src
        ├── 1.c
        ├── 2.c
        └── 3.c

したがって、Makefile は次のようになります。

all: ../bin/libmy_lib.a ../bin/my_program


../bin/my_lib_%.o: ../src/%.c
    $(CC) $(CFLAGS) -I../inc -c -o $@ $^

../bin/libmy_lib.a: ../bin/my_lib_1.o ../bin/my_lib_2.o  ../bin/my_lib_3.o
    ar rcs $@ $^

../bin/my_app_%.o: ../app/%.c
    $(CC) $(CFLAGS) -I../inc -c -o $@ $^

../bin/my_program: ../bin/my_app_app1.o ../bin/my_app_app2.o  ../bin/my_app_app3.o ../bin/libmy_lib.a
    $(CC) $(LDFLAGS) -L../bin/ -lmy_lib -o $@ $^


clean:
    rm -f ../bin/*.o ../bin/libmy_lib.a ../bin/my_program

説明については、以前の質問を参照してください

于 2013-03-19T10:10:03.853 に答える