读书人

SDL移植到ARM-linux下

发布时间: 2013-01-17 10:28:54 作者: rapoo

SDL移植到ARM-linux上

参考自:bluedrum笔《SDL及扩展库在ARM-Linux 完整移植

我用的编译环境是ubuntu10.10

1. 安装交叉编译工具链

arm-linux-gcc-4.4.3

具体安装步骤看我的博文《安装交叉编译器arm-linux-gcc》

2. 交叉编译SDL

编译SDL前先要编译其依赖库 tslib、libiconv

SDL移植到ARM-linux下

SDL移植到ARM-linux下

具体编译如下:

(Ps:/xyq/cross_compile/SDL是我自己创建的目录,编译结果将存在此目录中。)

Tslib

$ cd tslib-1.4

$ sudo apt-get install libtool automake autoconf

$ ./autogen.sh

$ echo "ac_cv_func_malloc_0_nonnull=yes"> arm-linux.cache

$ ./configure --prefix=/xyq/cross_compile/SDL --host=arm-linux --cache-file=arm-linux.cache

$ make

$ make install

Libiconv

$ cd ../libiconv-1.14

$ ./configure --prefix=/xyq/cross_compile/SDL --host= arm-linux --with-gnu-ld

$ make

$ make install


SDL

$ cd ../SDL-1.2.14

$ ./configure --prefix=/xyq/cross_compile/SDL --host= arm-linux --build=i386 --with-gnu-ld --disable-video-nanox --disable-video-qtopia --disable-pulseaudio --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 --enable-joystick --enable-input-tslib --enable-video-fbcon CPPFLAGS="-I/xyq/cross_compile/SDL/include" LDFLAGS="-L/xyq/cross_compile/SDL/lib -lts-liconv"

$ make

$ make install

3. SDL测试程序交叉编译

SDL的测试程序在SDL源码目录的test目录下。

1)进入test目录,执行如下configure脚本生成Malefile

$ ./configure --prefix=/xyq/cross_compile/SDL --host=arm-linux NM=arm-linux-nm LD=arm-linux-ld

CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar

2)Makefile默认是编译所有测试程序,但是在ARM上,游戏杆和opengl测试无法编译通过,要从Makefile文件中TARGETS去掉testgl,testjoystick的编译.

另外,默认的测试的路径指向是X86版,最简单的办法,可以手工修改Makefile调成ARM版。将

SDL移植到ARM-linux下 SDL移植到ARM-linux下

改成:

SDL移植到ARM-linux下SDL移植到ARM-linux下

之后 $ make 将在当前目录生成可执行文件。

4. SDL程序的测试

先将SDL编译结果移植到ARM,分别是将编译得到的lib、bin分别拷到ARM的/usr/lib、/usr/bin。再将测试可执行文件拷到ARM,注意要改变其可执行权限。

注意SDL的运行时必须指定MOUSE设备.如使用tslib,则用如下命令设置SDL使用tslib.

$ export SDL_MOUSEDRV=TSLIB

如果没有任何输入设备,则环境变量 export SDL_NOMOUSE=1 ,否则初始化会提示:Couldn't initializeSDL:Unable to open mouse

接下来用SDL自带的testalpha来测试是否SDL下tslib是否正常工作.运行这个程序,如果在点击处准确出现黄色色块,表示tslib与SDL配合完合成功,以下是在320*240bpp=16的开发板的实测的截图.

SDL移植到ARM-linux下SDL移植到ARM-linux下


5. SDL_image移植

有SDL本身所支持的仅仅是bmp格式的图片,要使用其他格式的图片就要使用其扩充库SDL_image,以下是编译过程:

$ cd ../SDL_image-1.2.8

$ ./autogen.sh

$ ./configure --prefix=/xyq/cross_compile/SDL --host= arm-linux -enable-shared --build=i386 -enable-static -enable-bmp -enable-gif -enable-jpg -enable-png -enable-tif -enable-pnm -enable-xpm disbale-sdltest

SDL_CFLAGS=”-I/xyq/cross_compile/SDLnclude/SDL”

SDL_LIBS=”-L/xyq/cross_compile/SDL/lib -lSDL”

LIBPNG_CFLAGS="-I/xyq/cross_compile/SDL/include"

LIBPNG_LIBS="-L/xyq/cross_compile/SDL/lib-lpng" CPPFLAGS="-I/xyq/cross_compile/SDL/include"

LDFLAGS="-L/xyq/cross_compile/SDL/lib -ljpeg-lts -liconv"

$ make

$ make install






读书人网 >UNIXLINUX

热点推荐