查找包位置时出现问题:libsdl2-image-2.0-0

A_S*_*ich 5 c++ sdl 15.04

最近我一直在研究 SDL 库,并想开始将 libsdl2-image-2.0-0 与 SDL 一起使用。我一直在尝试让它在 Ubuntu 15.04 上运行。我已经使用安装了该包

sudo apt-get install libsdl2-image-2.0-0
Run Code Online (Sandbox Code Playgroud)

安装似乎完全正常,但是当我尝试将图像库包含在我的 C++ 代码中时

#include <SDL2/SDL_image.h>
Run Code Online (Sandbox Code Playgroud)

我收到错误“致命错误:SDL2/SDL_image.h:没有这样的文件或目录”我去查看了 SDL2 基础库所在的位置 /usr/local/include/SDL2 ,正如错误消息所示 SDL_image.h 是不在那里。然后我试图找出图书馆在哪里使用

apt-file search SDL_image.h
Run Code Online (Sandbox Code Playgroud)

当我这样做时

libsdl-image1.2-dev: /usr/include/SDL/SDL_image.h
libsdl2-image-dev: /usr/include/SDL2/SDL_image.h
Run Code Online (Sandbox Code Playgroud)

两者都显示为结果。这对我来说很奇怪,因为我没有安装 libsdl2-image-dev。另外,当我尝试查看 /usr/include/SDL2/ 时,该文件夹甚至似乎不存在,这只会增加我的困惑。

然后我尝试删除 libsdl2-image-dev 这样我就可以安装 libsdl2-image-2.0-0 但是当我运行命令时

sudo apt-get remove libsdl2-image-dev
Run Code Online (Sandbox Code Playgroud)

我明白了

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.
Run Code Online (Sandbox Code Playgroud)

当我尝试运行命令时

sudo apt-get install libsdl2-2.0-0
Run Code Online (Sandbox Code Playgroud)

我最终得到

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.
Run Code Online (Sandbox Code Playgroud)

所以基本上我无法找到这个库在哪里,所以我无法将它正确链接到我的代码。是否有更可靠的方法来定位该库的位置,以及在使用这些补充库方面是否有一些我不理解的基本内容?

mur*_*uru 5

这对我来说很奇怪,因为我没有安装 libsdl2-image-dev。另外,当我尝试查看 /usr/include/SDL2/ 时,该文件夹甚至似乎不存在,这只会增加我的困惑。

apt-file使用数据库搜索可用软件包的内容,因此它显示您尚未安装的软件包也就不足为奇了。

然后我尝试删除 libsdl2-image-dev 这样我就可以安装 libsdl2-image-2.0-0

为什么您认为必须删除其中一个才能安装另一个,尤其是当您已经安装了它时?

关于使用这些补充库,是否有一些我不理解的基本内容?

是的。foo并且foo-dev可以共存。如果您是开发人员,您可能需要安装两者。foo-dev通常取决于foo,因此安装它foo也会强制安装。特别是,libsdl2-image-dev 取决于 libsdl2-image-2.0-0.


最后,只需安装该-dev软件包:

sudo apt-get install libsdl2-image-dev
Run Code Online (Sandbox Code Playgroud)