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

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    --enable-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

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 -liconv

改成

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"   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"

注意这里提示报错

configure: error: in `/home/huisen/libs/SDL_image-1.2.8':
configure: error: C compiler cannot create executables

最大可能性中间某一些库没有移植,比如libtiff,要先移植好库再使用SDL_image

实测发布发现libtiff还是尺寸较大。因此可以用如下语句取消对tiff的支持

./configure --enable-shared  --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux  --enable-bmp  --enable-gif  --enable-jpg --enable-png --disable-tif  --enable-pnm --enable-xpm  --disable-sdltest SDL_CFLAGS="-I$PWD/../../output/arm-linux/include/SDL"   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  -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 字体处理。

  • 主页 http://www.libsdl.org/projects/SDL_ttf/
  • 解压 tar xvzf SDL_ttf-2.0.9.tar.gz
    cd SDL_ttf-2.0.9
    生成Makefile
./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播放音乐>>

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

解压: 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移植

主页:http://www.libsdl.org/projects/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移植

主页:http://www.ferzkopp.net/Software/SDL_gfx-2.0/

解压: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

http://blog.51cto.com/tonghuix/1165839

SDL及扩展库在ARM-Linux 完整移植相关推荐

  1. SDL以及扩展库的交叉编译过程简介

    下面我介绍一下SDL以及SDL的扩展库在arm11上的交叉编译 在这里我将SDL 交叉编译的相关都安装在/opt/arm目录下 相关简介: SDL官方网站 http://www.libsdl.org/ ...

  2. ffmpeg-0.6.3开源编码解码库,从linux下移植到windows vs2005,全部开源。

    ffmpeg-0.6.3开源编码解码库,从linux下移植到windows vs2005,全部开源. 需要 Intel C++ Compile 和 开源的SDL库支持,由于 Intel C++ Com ...

  3. arm linux imx6u移植goahead web服务器

    arm linux imx6u移植goahead web服务器 源码下载 源码结构 源码移植 源码下载 1.源码版本goahead2.5 2. 百度云下载链接https://pan.baidu.com ...

  4. linux-arm下如何开启tftp传输,arm linux 下移植busybox 的tftp

    (1)进入busybox目录,make menuconfig ,然后在networking中勾选tftp项跟tftpd项. (2)配置/etc/inetd.conf 中关于tftp的选项(此部未验证, ...

  5. ros在arm linux上移植,ROS在Zedboard上的移植

    ROS全称robot operaring system,一般ROS是应用在Ubuntu系统中,本次移植是将ROS移植到Zedboard上的Linaro系统中去. 移植环境 开发板 : Zedboard ...

  6. openssh arm linux 编译,移植openssh到arm linux

    一.在移植之前需要准备做一些前期准备: 1.移植zlib库 1.1获取zlib源码 1.2解压 tar xvf zlib-1.2.11.tar.xz 1.3交叉编译 1.3.1 指定交叉编译器 exp ...

  7. ARM+linux系统移植3G拨号上网收发短信(三)【转】

    本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099755 一.用text查看模式 下面的"发"是指我敲的命 ...

  8. SDL教程4——在VS2010中设置SDL扩展库

    前几节我们了解到,SDL基本库只能加载普通的BMP图像,如果我们还想加载其它格式的图片,我们就需要用到SDL的扩展库,它可以帮助我们加载BMP, PNM, XPM, LBM, PCX, GIF, JP ...

  9. ffmpeg-0.8 开源编码解码库从linux下移植到windows vs2005

    最新 ffmpeg-0.8 开源编码解码库,从linux下移植到windows vs2005,全部开源. 需要 Intel C++ Compile 和 开源的SDL库支持,由于 Intel C++ C ...

最新文章

  1. ubuntu系统php环境变量设置,Ubuntu系统环境变量详解
  2. windows 2003 终端服务超出最大允许连接数(远程桌面,解决办法)
  3. 关于Window的快捷方式,图标缓存的清理
  4. linux export_symbol 变量,linux EXPORT_SYMBOL
  5. Github 精选:13 款炼丹利器,有开源工具包也有超大数据集
  6. 风控业务-模型稳定性评价指标PSI
  7. 为UIKeyboardTypeNumberPad增加自定义按键
  8. k8s创建pod加入容器_K8S架构原理及其工作流程
  9. 【今日CV 计算机视觉论文速览】Thu, 7 Mar 2019
  10. 计算机怎样辅助与美工结合,环保教案:幼儿园环保美工与信息技术整合案例
  11. linux 占用缓存前10_Linux安装软件时很多人会遇到这个报错,如何解决?
  12. Java基础篇:去探索String类
  13. mysql基于时间盲注_MySQL基于时间盲注(Time-Based Blind SQL Injection)五种延时方法...
  14. 工大瑞普 NP-OSPF综合实验
  15. 基于电商中台架构-商品系统设计(二):类目设计
  16. python—Django面试题汇总
  17. 打开PDF时显示please wait...怎么办?没有安装pdf阅读器经常出现的提示信息
  18. python列表append方法_Python列表append()方法
  19. 给我一段《巫师3》的核心代码
  20. 智能电子眼镜可监控健康,可进行脑机接口视觉刺激,控制视频游戏

热门文章

  1. hiho1249 Xiongnu's Land
  2. java全面的知识体系结构总结
  3. MongoDB-JAVA-Driver 3.2版本常用代码全整理(4) - 地理空间索引
  4. 海量数据库及分区4——《12年资深DBA教你Oracle开发与优化——性能优化部分》...
  5. FFT C语言 修改了matlab
  6. python的二维数组操作
  7. Opencv 配置VS2012
  8. [云炬创业基础笔记]第九章企业的法律形态测试3
  9. 2020中级财管(押题班)
  10. [云炬创业基础笔记]第一章创业环境测试6