11

これまでのところ、次のメイクファイルがあります...

# Beginning of Makefile

OBJS = obj/shutil.o obj/parser.o obj/sshell.o
HEADER_FILES = include/shell.h include/parser.h
STATLIB = lib/libparser.a lib/libshell.a
EXECUTABLE = sshell
CFLAGS = -Wall
CC = gcc
# End of configuration options

#What needs to be built to make all files and dependencies
all: $(EXECUTABLE) $(STATLIB)

#Create the main executable
$(EXECUTABLE): $(OBJS)
        $(CC) -o $(EXECUTABLE) $(OBJS)

$(STATLIB): $(
#Recursively build object files
obj/%.o: src/%.c
        $(CC) $(CFLAGS) -I./include  -c -o $@ $<


#Define dependencies for objects based on header files
#We are overly conservative here, parser.o should depend on parser.h only
$(OBJS) : $(HEADER_FILES)

clean:
        -rm -f $(EXECUTABLE) obj/*.o
        -rm -f lib/*.a

run: $(EXECUTABLE)
        ./$(EXECUTABLE)

tarball:
        -rm -f $(EXECUTABLE) *.o
        (cd .. ; tar czf Your_Name_a1.tar.z shell )

# End of Makefile

静的ライブラリ libparser.a および libshel​​l.a を生成しようとしています

これらの静的ライブラリを作成する方法がわかりません...

4

1 に答える 1

9

ar次のコマンドでスタティック ライブラリを作成します。

lib/libparser.a: $(OBJECT_FILES_FOR_LIBPARSER)
        ar rcs $@ $^

lib/libshell.a: $(OBJECT_FILES_FOR_LIBSHELL)
        ar rcs $@ $^

コマンドがオプションをar認識しない場合は、 によって作成されたファイルでも実行する必要があります。その場合は に置き換えてください。sranlib.aarar rcs $@ $^ar rc $@ $^ && ranlib $@

于 2013-03-04T08:04:54.570 に答える