27

这是我当前 Makefile 的一部分:

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

我已经正确安装了 libsdl,SDL.h 在它所属的 /usr/include/sdl 中,但它不会编译。我的 .h 文件中也有该行#include "SDL.h",但仍然不行。

有谁知道为什么?

4

6 回答 6

47

对于Simple Direct Media Layer 2 (SDL2),在 Ubuntu 16.04 上安装后,通过:

sudo apt-get install libsdl2-dev

我使用了标题:

#include <SDL2/SDL.h>  

和编译器链接器命令:

-lSDL2main -lSDL2 

此外,您可能还需要安装:

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

使用这些标题:

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

和编译器链接器命令:

-lSDL2_image 
-lSDL2_ttf 
-lSDL2_mixer
于 2016-12-02T21:12:10.497 回答
27

如果头文件是/usr/include/sdl/SDL.h并且您的代码具有:

#include "SDL.h"

您需要修复您的代码:

#include "sdl/SDL.h"

或者告诉预处理器在哪里可以找到包含文件:

CFLAGS = ... -I/usr/include/sdl ...
于 2012-05-07T20:39:33.093 回答
7

大多数时候 SDL 在/usr/include/SDL. 如果是这样,那么您的#include <SDL.h>指令是错误的,它应该是#include <SDL/SDL.h>.

另一种方法是将/usr/include/SDL目录添加到包含目录中。为此,您应该添加-I/usr/include/SDL到编译器标志...

如果您使用的是 IDE,这也应该很容易......

于 2012-05-07T20:56:15.210 回答
6

头文件位于

/usr/include/SDL/SDL.h

       __OR__

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

在您的 C++ 代码中使用

#include <SDL.h>

       __OR__

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

你有正确的用法

sdl-config --cflags --libs

       __OR__

sdl2-config --cflags --libs   #  sdl2

这会给你

-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

有时您可能还会看到这种适用于标准安装的用法

pkg-config --cflags --libs sdl

       __OR__

pkg-config --cflags --libs sdl2   #  sdl2

它为您提供

-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL

       __OR__

-D_REENTRANT -I/usr/include/SDL2 -lSDL2   #  SDL2
于 2016-08-20T03:15:56.917 回答
1

最简单的想法是在编译代码时添加 pkg-config --cflags --libs sdl2。

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

于 2019-04-28T12:05:11.497 回答
0

有一个类似的情况,我不能使用StackAttack的解决方案,因为他指的是 SDL2,这是我使用的旧代码太新。

幸运的是,我们来自askUbuntu的朋友也有类似的情况:

下载 SDL

tar xvf SDL-1.2.tar.gz
cd SDL-1.2
./configure
make
sudo make install
于 2018-12-13T11:20:03.647 回答