'“SDL.h” no such file or directory found' when compiling

后端 未结 6 928
情深已故
情深已故 2021-01-31 18:07

Here\'s a piece of my current Makefile:

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer

I have libsdl instal

相关标签:
6条回答
  • 2021-01-31 18:37

    If the header file is /usr/include/sdl/SDL.h and your code has:

    #include "SDL.h"
    

    You need to either fix your code:

    #include "sdl/SDL.h"
    

    Or tell the preprocessor where to find include files:

    CFLAGS = ... -I/usr/include/sdl ...
    
    0 讨论(0)
  • 2021-01-31 18:44

    Most times SDL is in /usr/include/SDL. If so then your #include <SDL.h> directive is wrong, it should be #include <SDL/SDL.h>.

    An alternative for that is adding the /usr/include/SDL directory to your include directories. To do that you should add -I/usr/include/SDL to the compiler flags...

    If you are using an IDE this should be quite easy too...

    0 讨论(0)
  • 2021-01-31 18:44

    header file lives at

    /usr/include/SDL/SDL.h
    
           __OR__
    
    /usr/include/SDL2/SDL.h  #  for SDL2
    

    in your c++ code pull in this header using

    #include <SDL.h>
    
           __OR__
    
    #include <SDL2/SDL.h>    // for SDL2
    

    you have the correct usage of

    sdl-config --cflags --libs
    
           __OR__
    
    sdl2-config --cflags --libs   #  sdl2
    

    which will give you

    -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
    -L/usr/lib/x86_64-linux-gnu -lSDL
    
           __OR__
    
    -I/usr/include/SDL2 -D_REENTRANT
    -lSDL2
    

    at times you may also see this usage which works for a standard install

    pkg-config --cflags --libs sdl
    
           __OR__
    
    pkg-config --cflags --libs sdl2   #  sdl2
    

    which supplies you with

    -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL
    
           __OR__
    
    -D_REENTRANT -I/usr/include/SDL2 -lSDL2   #  SDL2
    
    0 讨论(0)
  • 2021-01-31 18:56

    the simplest idea is to add pkg-config --cflags --libs sdl2 while compiling the code.

    g++ file.cpp `pkg-config --cflags --libs sdl2`

    0 讨论(0)
  • 2021-01-31 18:59

    For Simple Direct Media Layer 2 (SDL2), after installing it on Ubuntu 16.04 via:

    sudo apt-get install libsdl2-dev
    

    I used the header:

    #include <SDL2/SDL.h>  
    

    and the compiler linker command:

    -lSDL2main -lSDL2 
    

    Additionally, you may also want to install:

    apt-get install libsdl2-image-dev  
    apt-get install libsdl2-mixer-dev  
    apt-get install libsdl2-ttf-dev  
    

    With these headers:

    #include <SDL2/SDL_image.h>
    #include <SDL2/SDL_ttf.h>
    #include <SDL2/SDL_mixer.h>  
    

    and the compiler linker commands:

    -lSDL2_image 
    -lSDL2_ttf 
    -lSDL2_mixer
    
    0 讨论(0)
  • 2021-01-31 19:00

    Having a similar case and I couldn't use StackAttacks solution as he's referring to SDL2 which is for the legacy code I'm using too new.

    Fortunately our friends from askUbuntu had something similar:

    Download SDL

    tar xvf SDL-1.2.tar.gz
    cd SDL-1.2
    ./configure
    make
    sudo make install
    
    0 讨论(0)
提交回复
热议问题