最近我一直在研究 SDL 库,并想开始使用 libsdl2-image-2.0-0 和 SDL。我一直在尝试让它与 Ubuntu 15.04 配合使用。我使用以下方法安装了该软件包
sudo apt-get install libsdl2-image-2.0-0
安装似乎完全正常,但当我尝试将图像库包含到我的 C++ 代码中时
#include <SDL2/SDL_image.h>
我收到错误“致命错误:SDL2/SDL_image.h:没有这样的文件或目录”,我去查看了 SDL2 基础库位于 /usr/local/include/SDL2 的位置,正如错误消息所述,SDL_image.h 不存在。然后我试图找出库使用的位置
apt-file search SDL_image.h
当我这样做的时候
libsdl-image1.2-dev: /usr/include/SDL/SDL_image.h
libsdl2-image-dev: /usr/include/SDL2/SDL_image.h
都显示为结果。这对我来说很奇怪,因为我没有安装 libsdl2-image-dev。此外,当我尝试查看 /usr/include/SDL2/ 时,该文件夹甚至不存在,这更让我感到困惑。
然后我尝试删除 libsdl2-image-dev,以便可以安装 libsdl2-image-2.0-0,但是当我运行命令时
sudo apt-get remove libsdl2-image-dev
我明白了
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.
当我尝试运行命令时
sudo apt-get install libsdl2-2.0-0
我最终得到了
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.
所以基本上我无法找到这个库的位置,因此无法将其正确链接到我的代码。有没有更可靠的方法来定位这个库的位置,以及在使用这些补充库时我是否还不了解一些基本知识?
答案1
这对我来说很奇怪,因为我没有安装 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