织梦CMS - 轻松建站从此开始!

罗索

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

jackyhwei 发布于 2010-10-16 23:19 点击:次 
编译安装支持库 在ARM-LINUX编译SDL之前.需要编译如下安装库. 常见的库的iconv,zlib,freetype等都要 SDL支持库的移植参见.我的博客文章.ARM Linux下一些常用库的移植
TAG:

SDL的正确运行需要大量的支持库

 
1.编译安装支持库
在ARM-LINUX编译SDL之前.需要编译如下安装库.
常见的库的iconv,zlib,freetype等都要

SDL支持库的移植参见.我的博客文章.<<ARM Linux下一些常用库的移植 >>http://blog.chinaunix.net/u3/105675/showart_2195157.html

 

 
2.了解硬件支持.
2.1 tslib移植(确认触摸屏是否工作正常)
   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的开发板的实测的截图.
 
 
 
 
文件: run_alpha.zip
大小: 0KB
下载: 下载

 

3.SDL_image移植

  • 下载:http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz
  • 解压 tar xvzf SDL_image-1.2.8.tar.gz
  • cd SDL_image-1.2.8
  • 生成 configure ,执行 ./autogen.sh
  • 生成Makefile

./configure --enable-shared --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-bmp --enable-gif --enable-jpg --enable-png --enable-tif --enable-pnm --enable-xpm --disable-sdltest SDL_CFLAGS="-I$PWD/../../output/arm-linux/include"   SDL_LIBS="-L$PWD/../../output/arm-linux/lib -lSDL" LIBPNG_CFLAGS="-I$PWD/../../output/arm-linux/include"   LIBPNG_LIBS="-L$PWD/../../output/arm-linux/lib -lpng" CPPFLAGS="-I$PWD/../../output/arm-linux/include"   LDFLAGS="-L$PWD/../../output/arm-linux/lib -ltiff -ljpeg -lts -liconv"

 
编译 make
安装 make install
 
4.SDL_Net 移植
 
SDL网络处理.
主页:http://www.libsdl.org/projects/SDL_net/
解压: tar xvzf SDL_net-1.2.7.tar.gz
cd SDL_net-1.2.7
生成Makefile
./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
编译 make
安装 make install
 
 
5.SDL_ttf 移植
SDL对 TrueType 字体处理。
  
./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --disable-sdltest --with-freetype-prefix=$PWD/../../output/arm-linux/ --with-sdl-prefix=$PWD/../../output/arm-linux/ CFLAG="-I$PWD/../../output/arm-linux/include" LDFLAGS="-L$PWD/../../output/arm-linux/lib -lSDL -lts -liconv -lfreetype"
  • 修改Makefile,把语句当中的去掉opengl支持(这可能是这一版的BUG)
1)GL_LIBS = -L/usr/lib -lGL
这一句改成 GL_LIBS =
因为SDL_ttf会扫描桌面机的opengl库,并将其库路径加入其中,configure 未提供选项开关去掉这个选择,只能手工关掉。
 
2)glfont_LDADD = libSDL_ttf.la -L/usr/lib -lGL -lm
这一句修改成 glfont_LDADD = libSDL_ttf.la -lm
 
3)去掉 CFLAGS中 -I/usr/include -DHAVE_OPENGL
  • 修改源码
在编译前,注意去掉 glfont.c 这个源码,它是测试opengl 3D字体的。需要用opengl.大部分应用用不上,强行编译会提示/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lGL
我的解决办法是,把glfont.c 改名为 glfont_old.c.新建一个只有一个空的main()的glfont.c
 
编译Make
安装Make install
 
 
 
6.SDL_mixer 移植
SDL对于音频的处理。
主页:http://www.libsdl.org/projects/SDL_mixer/
   这里需要移植好 libmad 库。原理参见我的博客文章。
<<SDL编程教程--SDL_mixer播放音乐>>
 
解压: tar xvzf SDL_mixer-1.2.9.tar.gz
cd SDL_mixer-1.2.9
生成Makefile
./configure --enable-music-mp3-mad-gpl --enable-music-mp3=no --host=arm-linux --prefix=$PWD/../../output/arm-linux --with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static
编译
make
安装
make install
  
 
7。SDL_rtf移植
解压:tar xvzf SDL_rtf-0.1.0.tar.gz
cd SDL_rtf-0.1.0
生成Makefile
  
  

./autogen.sh

./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --enable-SDL_ttf

编译 make
安装 make install
 
8.SDL_gfx移植
解压:tar xvzf SDL_gfx-2.0.20.tar.gz
cd SDL_gfx-2.0.20
生成Makefile
  
./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --enable-mmx=no
编译 make
安装 make install
(bluedrum)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201010/10319.html]
本文出处:bluedrum.cublog.cn 作者:bluedrum
顶一下
(2)
50%
踩一下
(2)
50%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容