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
Was ist die Ausgabe von 'g ++ * .cpp -lSDL -O3 -v' auf dem Computer Ihres Freundes? – user657267
http://pastebin.com/WdmFF2Fv Hier ist der Ausgang. Irgendwelche Ideen? –
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