Ich habe da gerade ein kleines Problem mit einem makefile. Ich gebe zu, dass ich dafür nicht gerade ein Experte bin. Ich kopiere meistens funktionierende Muster und passe sie an. Hier mal die Ausgabe:
manfred@samurai:~/prog/net/bcd01$ make gcc -Wall -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -c thumb_server.c ... gcc -Wall -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -c make_thumb_name.c gcc -Wall -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -g -c functions.c gcc -o thumb_server thumb_server.o make_thumb_name.o functions.o -lglib-2.0 gcc -MM thumb_server make_thumb_name.c functions.c > depend gcc: warning: thumb_server: linker input file unused because linking not done make: „thumb_server“ ist bereits aktuell. manfred@samurai:~/prog/net/bcd01$
Der ausgelassene Anteil betrifft den Beispielcode aus einem Lehrbuch und betrifft Warnungen zu signed und unsigned chars.
Mich irritiert, dass der Linker nicht explizit aufgerufen wird und die Meldung, das der thumb_server bereits aktuell ist. Diese Meldung kommt auch, wenn ich vorher alle *.o Dateien gelöscht hatte.
Daher nehme ich an, dass mein makefile fehlerhaft ist.
# makefile for thumb_server CC = gcc DEBUG = -g CFLAGS = -Wall CFLAGS += $(shell pkg-config --cflags glib-2.0) LDSTATIC += $(shell pkg-config --libs glib-2.0) LINK = $(CC) DEPENDFILE = depend TARGET = thumb_server OBJS = thumb_server.o\ make_thumb_name.o\ functions.o SRCS = thumb_server\ make_thumb_name.c\ functions.c .SUFFIXES: .c .o %.o: %.c $(CC) $(CFLAGS) $(DEBUG) -c $< $(TARGET): $(OBJS) $(LINK) -o $(TARGET) $(OBJS) $(LDSTATIC) depend: $(SRCS) $(CC) -MM $(SRCS) > $(DEPENDFILE) -include $(DEPENDFILE)
Funktionieren tut das erzeugte Programm aber. Die angesprochenen Funktionen aus den anderen Dateien werden definitiv ausgeführt, was ich an den Ergebnissen und den eingebauten Debug-Ausgaben erkennen kann. Und make_thumb_name.c ist ein Code, den ich schon seit ca. 9 Monaten in zwei anderen Programmen einsetze.
Was habe ich falsch gemacht?