Sie nur eine Regel mit diesem Ziel machen.
librfc7539.so: rfc7539.o chacha20poly1305.o poly1305.o chacha20.o
$(LINK.c) $(OUTPUT_OPTION) -shared $^ $(LOADLIBES) $(LDLIBS)
ich den Befehl von make --print-data-base
kopiert (Sie aktualisieren können Ihre anderen Befehle ebenfalls). Möglicherweise müssen Sie auch -fPIC
zu LDFLAGS
hinzufügen.
Ich rief Ihre Bibliothek librfc7539.so
, so dass Sie mit -lrfc7539
verknüpfen können - ich denke, das ist, was Sie wollen.
Ich glaube, es am besten Praxis ist explizit die Objektdateien zu verknüpfen Sie beabsichtigen, zu spezifizieren, aber einige mögen davon ausgehen, dass jede Quelldatei kompiliert werden müssen und verknüpft:
sources := $(wildcard *.c)
librfc7539.so: $(sources:.c=.o)
Dies würde nicht funktionieren für Sie jedoch, es sei denn, Sie haben die Quelldateien umbenannt, die in Objektdateien mit unterschiedlichem Namen kompiliert werden.
Ich bemerke, dass es merkwürdig ist, dass Ihre Objektdateien von anderen Objektdateien abhängen. Das sollte nicht der Fall sein, obwohl sie Abhängigkeiten von einigen Header Dateien benötigen.
ist die komplette Makefile (vorausgesetzt, GNU Make):
CFLAGS += -Wall -Wextra
CFLAGS += -fPIC
LDFLAGS += -fPIC
%.so: LDFLAGS += -shared
all: rfc7539_test librfc7539.so
librfc7539.so: rfc7539.o chacha20poly1305.o poly1305.o chacha20.o
$(LINK.c) $(OUTPUT_OPTION) $^ $(LOADLIBES) $(LDLIBS)
rfc7539_test: rfc7539.o chacha20poly1305.o poly1305.o chacha20.o
$(LINK.c) $(OUTPUT_OPTION) $^ $(LOADLIBES) $(LDLIBS)
# Default %.o:%.c rule works, except for these files with misnamed sources:
chacha20.o: chacha_merged.c
$(COMPILE.c) $(OUTPUT_OPTION) $<
poly1305.o: poly1305-donna.c
$(COMPILE.c) $(OUTPUT_OPTION) $<
# Specific flags for this source file
poly1305.o: CFLAGS += -DPOLY1305_16BIT
.PHONY: clean
clean:
@$(RM) *.o
@$(RM) rfc7539_test
.DELETE_ON_ERROR:
Dank dieser die Antwort war ich für den ganzen Tag suchen. – yrekik
@YoussefRekik Froh ich könnte helfen. Fühlen Sie sich frei, diese Antwort zu akzeptieren (http://stackoverflow.com/help/accepted-answer), wenn Sie es nützlich fanden. – dbush