Ubuntu – Issues finding the location of package: libsdl2-image-2.0-0

15.04csdl

Recently I've been playing around with the SDL library and wanted to start using libsdl2-image-2.0-0 along with SDL. I have been trying to get this working with Ubuntu 15.04. I have installed the package using

sudo apt-get install libsdl2-image-2.0-0

The installation appeared to go completely fine but when I try to include the image library in my C++ code with

#include <SDL2/SDL_image.h>

I get an error "fatal error: SDL2/SDL_image.h: No such file or directory"
I went and looked where the SDL2 base library was located /usr/local/include/SDL2 and just as the error message said SDL_image.h was not there.
I then tried to figure out where the library was using

apt-file search SDL_image.h

When I do this

libsdl-image1.2-dev: /usr/include/SDL/SDL_image.h
libsdl2-image-dev: /usr/include/SDL2/SDL_image.h

both show up as results. This is strange to me since I did not install libsdl2-image-dev. Also when I try to view /usr/include/SDL2/ the folder doesn't even appear to exist which just adds to my confusion.

I then tried to remove libsdl2-image-dev so I could install libsdl2-image-2.0-0 but when I run the command

sudo apt-get remove libsdl2-image-dev

I get

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'libsdl2-image-dev' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.

and when I try to run the command

sudo apt-get install libsdl2-2.0-0

I end up getting

Reading package lists... Done
Building dependency tree       
Reading state information... Done
libsdl2-2.0-0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.

So basically I cannot locate where this library is and so I can't properly link it to my code. Is there a more reliable way to locate where this library is and is there something fundamental I am not understanding in regards to using these supplementary libraries?

Best Answer

This is strange to me since I did not install libsdl2-image-dev. Also when I try to view /usr/include/SDL2/ the folder doesn't even appear to exist which just adds to my confusion.

apt-file searches the contents of available packages using a database, so it is hardly a surprise that it showed a package which you hadn't installed.

I then tried to remove libsdl2-image-dev so I could install libsdl2-image-2.0-0

Why do you think you have to remove one to install the other, especially when you have already installed it?

is there something fundamental I am not understanding in regards to using these supplementary libraries?

Yes. foo and foo-dev can coexist. If you are a developer, you will probably need both to be installed. foo-dev often depends on foo, so installing it forces foo to be installed as well. In particular, libsdl2-image-dev depends on libsdl2-image-2.0-0.


To conclude, just install the -dev package:

sudo apt-get install libsdl2-image-dev
Related Question