SDL移植
注: 此贴转自我们以前的Google协作平台!
SDL是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、 MPEG播放器和其他应用软件。是为数不多的商业游戏开发公司使用的免费软件库之一。它提供跨平台的二维帧缓冲区图形和音频服务,它支持 Linux、Win32 和 BeOS。也不同程度地支持其它平台,包括 Solaris、IRIX、FreeBSD 和 MacOS。除了大量的服务,包括线程、独立于字节存储次序的宏和 CD 音频,SDL 还提供了一个简单的 API,它允许您尽可能接近本机硬件。使用 SDL 有三重优点:稳定、简单和灵活。
和Linux下其他的软件库一样,SDL同样具有很强的移植性!我们所要做的就是在PC机上编写应用程序,调试通了以后就可以交叉编译移植到ARM板子上。到http://www.libsdl.org/download-1.2.php 下载SDL-1.2.13 (stable),然后进行安装,由于后面的交叉编译的是`tar.xx`
源码包,所以建议在PC机上使用`tar.xx`包进行安装。 安装前请先查看是否安装有SDL,如果有请先卸载,如果你的系统使用的是`rpm软件安装包管理器`可以使用下面的命令进行查看: # rpm -qa |grep SDL 如果使用`dpkg软件包管理器`,可以使用: # dpkg -s SDL 下一步开始安装,这里以SDL-1.2.13.tar.gz 为例: # cd /tmp # wget http://www.libsdl.org/release/SDL-1.2.13.tar.gz # tar zxf SDL-1.2.13.tar.gz # cd SDL-1.2.13 # ./configure --help 使用上面这条命令用来查看`configure`选项信息,然后在这些选项中筛选必要的选项。 # ./configure --prefix=/usr/local/SDL --disable-video-x11 2>&1 | tee conf_log `--prefix=/usr/local/SDL`是SDL的安装目录,此目录可以自己设定。 由于我的系统没有x11的开发环境,并且也不会用到SDL操作x11,因此我使用了`--disable-video-x11`这个选项。 参数`2>&1 | tee conf_log`的意思是把configure的信息输出到终端的同时写入到`conf_log`中,这个参数很有用,我们可以不用一直 盯着屏幕看是否报错,等编译完成后直接查看`conf_log`这个文件即可,以后在`configure`、`make`等操作时,建议使用这个参数。 如果没有错误,执行: # make 2>&1 | tee make_log # make install OK.PC 机上SDL安装完成。下面编译SDL的例子程序做测试: # cd test # ./configure --with-sdl-prefix=/usr/local/SDL # make # ./testwin 如果在屏幕上出现一张图片闪过说明SDL编译成功。
由于ARM板的资源有限,不可能把所有的选项都开启,因此我们需要根据实际情况进行选择,下面的选项一般可以满足我们的要求:
# ./configure --prefix=/work/SDL_arm CC=arm-linux-gcc --host=arm-linux --target=linux --disable-debug --disable-cdrom --disable-esd --disable-arts --disable-arts-shared --disable-diskaudio --disable-nas --disable-esd-shared --disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga --disable-dga --disable-video-ps2gs --disable-video-xbios --disable-video-gem --disable-video-opengl --disable-directx --disable-stdio-redirect --disable-osmesa-shared 2>&1 | tee conf_log 如果没有报错就可以进行编译: # make 2>&1 | tee make_log 如果报错的话就需要根据出错信息调整一下`configure`的选项参数后编译(参数调整后没有必要`make clean`,直接`make` 就行了,make工具会智能的探寻哪些目标需要编译)。如果没有错误就可以`make install`了。 # make install 下一步测试交叉编译的SDL库是否能在ARM上正常使用。 交叉编译SDL的例子程序 # cd test # ./configure CC=arm-linux-gcc --host=arm-linux --with-sdl-prefix=/work/SDL_arm # make 如果报错的话,根据错误提示进行修改。 把交叉编译的库通过nfs服务器 共享到ARM板。 # cp /work/SDL_arm/lib/libSDL-1.2.so.0.11.2 $NFS_ROOTDIR # cp ./testwim $NFS_ROOTDIR 做SDL库文件的软链接(SDL动态库使用libSDL-1.2.so.0这个名字提供服务)。 # cd $NFS_ROOTDIR # ln -s libSDL-1.2.so.0.11.2 libSDL-1.2.so.0 执行下列操作:
如果运行成功就说明移植成功,失败的话不用心慌,认真的参考出错信息查找出错原因。
|