Problem mit makefile



  • Hallo Leute,

    hab ein Problem beim Linken von meinem Projekt, undzwar bekomme ich Fehlerermeldungen ueber undefined References. hier erstmal der makefile

    # Project: netwar
    CPP  = g++ 
    CC   = gcc 
    OBJ  = ../../build/alpha/main.o ../../build/alpha/MARS.o ../../build/alpha/ZEUS.o ../../build/alpha/Log.o
    LIBS =  -l boost_filesystem
    INCS =   -I"/usr/local/boost_1_34_1"  
    BIN  = ../../build/alpha/netwar
    RM = rm -f
    
    .PHONY: all all-before all-after clean clean-custom
    
    all: all-before ../../build/alpha/netwar all-after
    
    clean: clean-custom
    	${RM} $(OBJ) $(BIN)
    
    $(BIN): $(OBJ)
    	$(CPP) $(OBJ) -o $(BIN) $(INCS) $(LIBS)
    
    ../../build/alpha/main.o: main.cpp ZEUS.hpp MARS.hpp Log.hpp
    	$(CPP) -c main.cpp -o ../../build/alpha/main.o $(INCS)
    
    ../../build/alpha/MARS.o: MARS.cpp MARS.hpp
    	$(CPP) -c MARS.cpp -o ../../build/alpha/MARS.o $(INCS)
    
    ../../build/alpha/ZEUS.o: ZEUS.cpp ZEUS.hpp MARS.hpp Grammar.hpp Log.hpp
    	$(CPP) -c ZEUS.cpp -o ../../build/alpha/ZEUS.o $(INCS)
    
    ../../build/alpha/Log.o: Log.cpp 
    	$(CPP) -c Log.cpp -o ../../build/alpha/Log.o $(INCS)
    

    Obwohl ich die boost_filesystem lib mit linke und ich Sie in den Ordner /usr/lib/ gelegt habe und er scheint die Bibliothek auch zu finden, weil ich vorher den Fehler bekam das er die Bibliothek nicht findet. Jetzt Bekomme Ich diese Fehlermeldung:

    make -k
    g++ ../../build/alpha/main.o ../../build/alpha/MARS.o ../../build/alpha/ZEUS.o ../../build/alpha/Log.o -o ../../build/alpha/netwar -I"/usr/local/boost_1_34_1" -l boost_filesystem
    ../../build/alpha/main.o: In function main': main.cpp:(.text+0x25d): undefined reference toboost::filesystem::initial_path()'
    ...
    collect2: ld returned 1 exit status
    make: *** [../../build/alpha/netwar] Error 1
    make: Target `all' not remade because of errors.

    kann mir jmd. den Fehler in meinem makefile zeigen?



  • das ist kein problem mit einem makefile sondern mit boost_filesystem. die verwendung von initial_path ist deprecated. man muss initial_pathboost::filesystem::path() verwenden. die alte version ist als inline deklariert. es ist komisch, dass sie bei dir nicht geinlined wurde. schau in die datei "boost/filesystem/operations.hpp" dort so bei zeile 520 kommt das zumindest bei meiner installation vor.



  • Danke fuer die info. Hab es jetzt zum laufen gebracht


Anmelden zum Antworten