SDL的移植与测试

一、SDL的简介

SDL是一个自由的跨平台的多媒体开发包,适用于
游戏、游戏SDK、演示软件、模拟器、
MPEG播放器和其他应用软件。是为数不多的商业游戏开发公司使用的免费软件库之一。它提供跨平台的二维帧缓冲区图形和音频服务,它支持 Linux、Win32 和
BeOS。也不同程度地支持其它平台,包括 Solaris、IRIX、FreeBSD 和 MacOS。除了大量的服务,包括线程、独立于字节存储次序的宏和 CD
音频,SDL
 还提供了一个简单的 API,它允许您尽可能接近本机硬件。使用 SDL 有三重优点:稳定、简单和灵活。

  • 稳定
    如果 SDL 不向 API 提供可靠的支持,那么那些爱好者和商业公司就不能使用它。因为使用了
    SDL,就添加了错误修正并增强了性能,也就加强了 API 的强健性。就像内核开发是分步进行的,SDL 的开发也是分步进行的,其中一部分是可靠稳定的
    API,其它部分是新功能和构思的沙箱。
  • 简单
    SDL 被设计成一个简单的 API,以最少的代码实现您的构思。
  • 灵活
    返回到上面的 Optimum 演示代码示例,只要移植到 SDL,并确定一些数据假设,那么根本不必改动代码,演示就可以在
    Win32、BeOS 和 Linux 控制台上运行了。灵活性的另一方面体现在尽管代码完全是跨平台的,但不会把您和底层实现隔开。SDL 提供了函数
    SDL_GetWMInfo(),该函数可以让您访问底层驱动程序的专用窗口信息。

二、宿主机上安装SDL

SDL同样具有很强的移植性,我们可以在宿主机上编写应用程序,编译以后就可以交叉编译移植到ARM上执行可执行程序,为了提供SDL交叉编译所需的实验环境,在交叉编译SDL之前,应当先在宿主机安装SDL

终端输入:

sudo apt-get install libsdl1.2-dev

宿主机安装SDL之后,需要安装一些附加软件以满足宿主机对SDL的支持

终端输入:

sudo apt-get install libsdl-image1.2-dev

sudo apt-get install libsdl-mixer1.2-dev

sudo apt-get install libsdl-ttf2.0-dev

sudo apt-get install libsdl-gfx1.2-dev

安装SDL之后,我们执行一个测试程序来检验SDL是否安装成功

 

程序源码如下:

#include 
#include 
int main()
{
    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;
    SDL_Init( SDL_INIT_EVERYTHING );
    screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
    hello = SDL_LoadBMP( "1.bmp" );
    SDL_BlitSurface( hello, NULL, screen, NULL );
    SDL_Flip( screen );
    SDL_Delay( 5000 );    
    SDL_Quit();
    SDL_FreeSurface( hello );
    SDL_Quit();
    return 0;

} 

SDL的移植与测试_第1张图片

在执行程序之前,先将一个bmp文件复制到程序目录,之后使用gcc将源程序编译生成可执行文件

终端输入:gcc -o run test.c -lSDL

 

程序执行结果如下:

SDL的移植与测试_第2张图片

程序运行成功

三、移植SDLARM

SDL同样具有很强的移植性,我们可以在宿主机上编写应用程序,编译以后就可以交叉编译移植到ARM上执行可执行程序

将下载的SDL的源码通过VMware的共享文件夹拷贝到Ubuntu下,并将其解压到指定目录(/nfsroot/SDL-arm)

之后进入相关目录,文件夹内容如下:

SDL的移植与测试_第3张图片

之后对源码进行配置:

./configure --prefix=/nfsroot/SDL-arm --disable-pulseaudio --disable-video-nanox -disable-video-qtopia --disable-static --enable-shared --disable-video-photon --disable-video-ggi  --disable-video-svga --disable-video-aalib --disable-video-dummy --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-video-x11 --disable-nasm --disable-joystick --disable-input-tslib  -enable-video-fbcon --host=arm-none-linux-gnueabi

命令执行结果如下:

SDL的移植与测试_第4张图片

之后便会在当前文件夹下生成Makefile文件

SDL的移植与测试_第5张图片

终端输入make对源文件进行编译,之后输入make install进行安装

SDL的移植与测试_第6张图片

SDL的移植与测试_第7张图片

之后便在指定文件夹下生成了相关文件

SDL的移植与测试_第8张图片

在当前目录下,编辑SDL的测试程序test.c

之后终端输入:arm-none-linux-gnueabi-gcc  test.c -o run -I/nfsroot/SDL-arm/include  -L/nfsroot/SDL-arm/lib -lSDL

成功编译之后,便会在当前目录下生成可执行文件run

接下来使用X-shell对ARM板进行连接,更改开发箱的ip地址,使其与宿主机的ip处于一个网段

例如:

SDL的移植与测试_第9张图片

SDL的移植与测试_第10张图片

开发箱下的终端输入:mountnfs 192.168.1.104:/nfsroot /mnt/nfs

之后执行交叉编译生成的可执行文件,并观察结果

结果如下:

SDL的移植与测试_第11张图片

程序运行成功,至此SDL的移植完成

 

你可能感兴趣的:(ARM开发)