SDL及扩展库在ARM-Linux 完整移植

http://blogold.chinaunix.net/u/28407/article_48368.html

http://my.chinaunix.net/space.php?uid=22666248&do=blog&id=267279

1.编译安装支持库

在ARM-LINUX编译SDL之前.需要编译如下安装库.

常见的库的iconv,zlib,freetype等都要

SDL支持库的移植参见.我的博客文章.<<ARM Linux下一些常用库的移植 >>

http://blog.chinaunix.net/u3/105675/showart_2195157.html

2.了解硬件支持.

2.1 tslib移植(确认触摸屏是否工作正常)

   参见 http://blog.chinaunix.net/u3/105675/showart_2145447.html

   2.2 确认开发板音频驱动采用哪一种类型(OSS还是ALSA)

   2.3 确认视频输出采用哪一种类型(不出意外是Frame Buffer)

2.4 是否加入opengl的支持.

项目目录,也将放在common_lib的库的一部分。所有库放在/home/hxy/common_lib/SDL 目录下

        

2.SDL的移植

1.解压

tar xvzf SDL-1.2.14.tar.gz ; cd SDL-1.2.14

2.生成configure 脚本



./configure --prefix=$PWD/../../output/arm-linux --disable-video-nanox --disable-video-qtopia --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 --enable-input-tslib --enable-video-fbcon --host=arm-linux --build=i386 CPPFLAGS="-I$PWD/../../output/arm-linux/include"   LDFLAGS="-L$PWD/../../output/arm-linux/lib -lts -liconv"

关键参数解释

  •    --enable-input-tslib #支持tslib 触摸屏
  •     --disable-x11 --enable-video-fbcon #关闭X11支持,打开framebuffer LCD输出
  •     --disable-alsa #音频使用oss,如果使用--enable-alsa,必须先编译alsa-libs
  •     --host=arm-linux #使用arm-linux-gcc编译工具.   
  •      --prefix=$PWD/../../output/arm_linux #SDL安装目录
  •      --disable-joystick #去掉游戏杠支持
  • CPPFLAGS,LDFLAGS主要是为 --enable-input-tslib准备。否则在依赖文件里(.libs/libSDL.lai)会采用 dependency_libs=' -lm /usr/local/lib/libts.la -ldl -lpthread'这样在ARM版明显错误。如果对触摸屏输入不敏感,可以直接 --disable-input-tslib
  • 而-liconv因为在扫描目录也有libiconv,这样自动加入依赖。以免编译其它SDL依赖库出错。

   3.编译

     make

4.安装

    make install

5.SDL测试程序移植

SDL的测试程序在SDL源码目录的test目录下。
   执行如下的configure 脚本生成Makefile

NM=arm-linux-nm LD=arm-linux-ld CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar ./configure --host=arm-linux --prefix=$PWD/../../../output/arm_linux LDFLAGS=

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

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

CFLAGS = -g -O2 -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include -DHAVE_OPENGL
LIBS    = -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread

改成

SDL_DIR = /home/hxy/common_lib/arm-linux
CFLAGS = -g -O2 -I$(SDL_DIR)/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT 
LIBS    = -L$(SDL_DIR)/lib -lSDL -lpthread


        

6.SDL程序的测试

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

    export SDL_MOUSEDRV=TSLIB

如果没有任何输入设备,则环境变量 export SDL_NOMOUSE=1 ,否则初始化会提示

Couldn't initialize SDL:Unable to open mouse

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

转自:https://blog.csdn.net/s_k_yliu/article/details/6633564

猜你喜欢

转载自blog.csdn.net/lbc2100/article/details/82116401