参考自:bluedrum笔《SDL及扩展库在ARM-Linux 完整移植》
我用的编译环境是ubuntu10.10
1. 安装交叉编译工具链
arm-linux-gcc-4.4.3
具体安装步骤看我的博文《安装交叉编译器arm-linux-gcc》
2. 交叉编译SDL
编译SDL前先要编译其依赖库 tslib、libiconv
具体编译如下:
(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版。将
改成:
之后 $ 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的开发板的实测的截图.
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