2016-05-28 9 views
0

Ich habe vor kurzem versucht, ein Makefile zu machen, und es funktioniert gut auf meinem Laptop. Ich machte ein Spiel in C++ und teilte meinen Code auf GitHub. Einer meiner Freunde klonte das Repo und informierte mich, dass er auf einige Fehler stieß. Um zu Fehlern zu kommen, muss ich Ihnen mitteilen, dass mein Projekt QuickCG verwendet, das auf SDL basiert, also muss natürlich SDL installiert sein. Mein Freund hatte das anfangs nicht, aber lud es später unter der Nummer sudo apt-get install libsdl1.2-dev herunter. Nach dem Download wurde der Header-Include-Fehler entfernt, aber es gibt immer noch einen Verknüpfungsfehler. Hier ist mein Make-DateiMakefile Verbindungsfehler -lSDL (linux)

CC = g++ 
CFLAGS = -c -O3 
CLINK_FLAGS = -lSDL 
all : game 
game : main.o quickcg.o 
    $(CC) main.o quickcg.o -o game $(CLINK_FLAGS) 
main.o : main.cpp 
    $(CC) $(CFLAGS) main.cpp 
quickcg.o : quickcg.cpp 
    $(CC) $(CFLAGS) quickcg.cpp 
clean : 
    rm *.o game 

My Game-Ordner nur 2 CPP-Dateien enthält, die main.cpp und quickcg.cpp sind. Es enthält auch eine Header-Datei quickcg.h

nun auf die genaue Fehlerfeststellung zu kommen, nachdem

g++ -c -O3 main.cpp 
g++ -c -O3 quickcg.cpp 
g++ main.o quickcg.o -o game -lSDL 
/usr/bin/ld: cannot find -lSDL 
collect2: error: ld returned 1 exit status 
make: *** [game] Error 1 

Bitte beachten Sie machen die Ausführung, dass diese auf meinem Laptop ganz gut funktioniert. Bitte beachten Sie auch, dass der folgende Befehl wie ein Zauber arbeitete auch an seinem Laptop

g++ *.cpp -lSDL -O3 

es so klar scheint mit Make-Datei ein Fehler zu sein. Verzeihen Sie mir, wenn ich etwas Dummes gemacht habe, weil ich Makefiles neu bin, aber ich kann hier keine Fehler finden. Vielen Dank im Voraus

+0

Was ist die Ausgabe von 'g ++ * .cpp -lSDL -O3 -v' auf dem Computer Ihres Freundes? – user657267

+0

http://pastebin.com/WdmFF2Fv Hier ist der Ausgang. Irgendwelche Ideen? –

+0

Fügen Sie jetzt die Option hinzu, wenn Sie das Makefile verwenden, Sie müssen sich die allerletzten Zeilen ansehen, die mit '-L' beginnen, wenn sie die Bibliothek nicht finden können, dann sollten diese Pfade anders sein. – user657267

Antwort

0

können Sie versuchen,

CLINK_FLAGS = `sdl-config --libs` 

wenn Sie den Pfad für -L nicht kennen.