Hier ist ein Stück meines aktuellen Makefiles:
CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer
Ich habe libsdl richtig installiert, SDL.h ist in/usr/include/sdl, wo es hingehört, aber es wird einfach nicht kompiliert. Ich habe auch die Zeile #include "SDL.h"
in meinen .h-Dateien, aber immer noch nicht.
Weiß jemand warum?
Wenn die Header-Datei /usr/include/sdl/SDL.h
ist und Ihr Code Folgendes hat:
#include "SDL.h"
Sie müssen entweder Ihren Code korrigieren:
#include "sdl/SDL.h"
Oder teilen Sie dem Präprozessor mit, wo Sie Include-Dateien finden können:
CFLAGS = ... -I/usr/include/sdl ...
Für Simple Direct Media Layer 2 (SDL2) nach der Installation auf Ubuntu 16.04 über:
Sudo apt-get install libsdl2-dev
Ich habe den Header verwendet:
#include <SDL2/SDL.h>
und den Compiler-Linker-Befehl:
-lSDL2main -lSDL2
Zusätzlich möchten Sie möglicherweise auch Folgendes installieren:
apt-get install libsdl2-image-dev
apt-get install libsdl2-mixer-dev
apt-get install libsdl2-ttf-dev
Mit diesen Headern:
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_mixer.h>
und die Compiler-Linker-Befehle:
-lSDL2_image
-lSDL2_ttf
-lSDL2_mixer
Meistens ist SDL in /usr/include/SDL
. Wenn ja, dann ist Ihre #include <SDL.h>
-Direktive falsch, es sollte #include <SDL/SDL.h>
sein.
Eine Alternative dazu ist das Hinzufügen des Verzeichnisses /usr/include/SDL
zu Ihren Include-Verzeichnissen. Dazu müssen Sie den Compiler-Flags -I/usr/include/SDL
hinzufügen ...
Wenn Sie eine IDE verwenden, sollte dies auch ganz einfach sein ...
Die Headerdatei lebt um
/usr/include/SDL/SDL.h
ziehen Sie in Ihrem C++ - Code diesen Header mit
#include <SDL.h>
sie haben die korrekte Verwendung von
`sdl-config --cflags --libs`
das wird dir geben
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
-L/usr/lib/x86_64-linux-gnu -lSDL
zu einem späteren Zeitpunkt können Sie auch diese Verwendung sehen, die für eine Standardinstallation geeignet ist
`pkg-config --cflags --libs sdl`
was versorgt dich mit
-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL
die einfachste Idee ist, pkg-config --cflags --libs sdl2 hinzuzufügen, während der Code kompiliert wird.
g++ file.cpp `pkg-config --cflags --libs sdl2`
Ich hatte einen ähnlichen Fall und konnte die Lösung von StackAttack nicht verwenden, da er sich auf SDL2 bezieht, was für den alten Code, den ich zu neu verwende, ist.
Zum Glück hatten unsere Freunde von askUbuntu etwas Ähnliches:
tar xvf SDL-1.2.tar.gz
cd SDL-1.2
./configure
make
Sudo make install