Makefile Hilfe: Eingabedateien des Binders unbenutzt



  • Hallo,

    ich habe ein ganz simples Makefile das bei mir den Fehler bringt:

    Eingabedateien des Binders unbenutzt, da keine Bindung geschieht
    

    Mein Makefile sieht so aus:

    TARGET   := prog
    CXXFLAGS := -c -O3 -Wall
    CXX      := g++
    LIBS     := -llapack -L/usr/lib/atlas -lblas -latlas ../CSparse/Lib/libcsparse.a -lrt
    EXT      := cpp
    OBJECTS = main.o Pattern.o Matrix_Base.o 
    
    SOURCES  := $(wildcard *.$(EXT))
    OBJECTS  := $(patsubst %.$(EXT), %.o, $(SOURCES))
    
    .PHONY: all
    all: $(TARGET)
    
    $(TARGET): $(OBJECTS)
    	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
    
    .PHONY: clean
    clean:
            rm *.o
    

    wo liegt mein fehler?



  • Das liegt nicht an der Makefile, sondern daran, wie du den Compiler aufrufst. Wenn du das -c-Flag setzt, dann linkt der GCC nicht (daher gehört das -c-Flag nie nie niemals in die CFLAGS oder CXXFLAGS). Also ignoriert er auch die ganzen -l-Flags etc. (und davor warnt er dich berechtigterweise.

    Siehe man: gcc



  • danke rüdiger - so gehts jetzt natürlich -

    weitere Frage:
    Warum geht ein

    clean:
         rm -rf *.o
    

    nicht? Also die .o files liegen immer noch rum....



  • Hi,
    Ein "clean" wird nicht automatisch mit jeder Kompilierung aufgerufen, es gezielt aufgerufen werden:
    % make clean

    Siehe auch:
    http://cprogramming.com/tutorial/makefiles.html

    Gruß Luis



  • @Luis
    Der Thread ist von 2007. Ich denke nicht, dass eine Antwort jetzt noch Sinn macht...


Anmelden zum Antworten