(SDL)(01)SDL Introduction

来源:互联网 发布:办公用品库存软件 编辑:程序博客网 时间:2024/05/16 09:02

SDL: Simple DirectMedia Layer


Ubuntu上安装SDL:

sudo apt-cache search libsdl | grep libsdl


$ sudo apt-cache search libsdl | grep libsdl
libsdl1.2-dbg - Simple DirectMedia Layer debug files
libsdl1.2-dev - Simple DirectMedia Layer development files
libsdl1.2debian - Simple DirectMedia Layer

...

libsdl2-2.0-0 - Simple DirectMedia Layer
libsdl2-dbg - Simple DirectMedia Layer debug files
libsdl2-dev - Simple DirectMedia Layer development files

这样搜索出来的文件有很多,列出来的这六个软件包,刚好对应SDL的两个版本:1.2和2.0版本,通过如下命令可以安装这六个软件包:

sudo apt-get install libsdl1.2-dbg libsdl1.2-dev libsdl1.2debian libsdl2-2.0-0 libsdl2-dbg libsdl2-dev

安装完毕后,然后通过pkg-config工具可以看到:

For SDL 1.2

$ pkg-config --cflags sdl
-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL
$ pkg-config --libs sdl
-lSDL

For SDL 2.0

$ pkg-config --cflags sdl2
-D_REENTRANT -I/usr/include/SDL2
$ pkg-config --libs sdl2
-lSDL2

可以直接在Makefile中使用pkg-config工具,例如:

#include <stdio.h>
#include <stdlib.h>


#include <SDL.h>


int main(int argc, char** argv, char** envp)
{
    int result = 0;

    result = SDL_Init(SDL_INIT_EVERYTHING);

    printf("result for SDL Init is: %d\n", result);

    if(result != 0)
    {
        printf("SDL_Init unsuccessfully!\n");
        printf("error is: %s\n", SDL_GetError());
        return 0;
    }

    SDL_Quit();
    
    return 0;
}

编译脚本Makefile:

all:
        gcc `pkg-config --cflags sdl2` main.c -o main `pkg-config --libs sdl2`


SDL 除了通过上述的 sudo apt-get install libsdl1.2-dbg libsdl1.2-dev libsdl1.2debian libsdl2-2.0-0 libsdl2-dbg libsdl2-dev 这样安装外,

还可以到 https://www.libsdl.org/download-2.0.php 或者 https://www.libsdl.org/download-1.2.php 下载 SDL 的源代码,然后通过

./configure

make -j8

sudo make install

这些命令序列进行安装头文件和库文件,通常会放在 /usr/local/include 路径下,当不再需要了,则可以通过

sudo make uninstall

命令进行卸载删除。


通过Makefile编译脚本,生成main可执行文件,在putty terminal中执行,每次都是如下错误:

result for SDL Init is: -1
SDL_Init unsuccessfully!
error is: Failed to connect to the Mir Server


此时,需要切换到Ubuntu中的图形界面中,通过在gnome-terminal中执行main程序,则

result for SDL Init is: 0

SDL_Init函数初始化成功。




1 0