移植SDL运行库到ARM11(s3c6410)上

 

1.libconv库的编译

# cd /opt/mini6410/games
# mkdir output

# tar xvzf /tmp/libiconv-1.13.1.tar.gz  
# cd libiconv-1.13.1
# ./configure --host=arm-linux --prefix=/opt/mini6410/games/output
# make
# make install

这个编译过程一般不会有什么问题

 

2.SDL库的编译

 

# cd /opt/mini6410/games
# tar xvzf /tmp/SDL-1.2.14.tar.gz
# cd SDL-1.2.14
# ./configure --prefix=/opt/mini6410/games/output --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
# make
# make install

这个过程要注意,有可能会提示-lpulse没有找到,如果有这个提示请链接库到你lpulse库下,例如你的lpulse库在usr/lib目录下则在链接库时添加-L/usr/lib,其他错误可以更改相应的头文件或者相应代码

 

/src/audio/pulse/SDL_pulseaudio.c:33:30: fatal error: pulse/pulseaudio.h: No such file or directory
在makefile文件中添加(EXTRA_CFLAGS = -I./include) -I /usr/include


/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
错误: #error "Never use <bits/predefs.h> directly;
用include <features.h> 代替"

In file included from /usr/include/fcntl.h:41:0,
                 from ./src/video/fbcon/SDL_fbevents.c:31:
/opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1
/../../../../arm-none-linux-gnueabi/include/bits/stat.h:20:3:
error: #error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
分别修改fcntl.h和SDL_fbevents.c中的头文件include <bits/stat.h>为include<sys/stat.h>

 

3.编译SDL_image库

 

编译此库时一定要保证lpulse库被编译

# cd /opt/mini6410/games
# tar xvzf /tmp/SDL_image-1.2.8.tar.gz
# cd SDL_image-1.2.8
# ./configure  --enable-shared  --enable-static  --host=arm-linux  --build=i386
--prefix=/opt/mini6410/games/output  --enable-bmp  --enable-gif  --enable-jpg
--enable-png   --enable-tif  --enable-pnm  --enable-xpm
--disable-sdltest   SDL_CFLAGS="-I/opt/mini6410/games/output/include"
SDL_LIBS="-L/opt/mini6410/games/output/lib  -lSDL"
LIBPNG_CFLAGS="-I/opt/mini6410/games/output/include"
LIBPNG_LIBS="-L/opt/mini6410/games/output/lib  -lpng"
CPPFLAGS="-I/opt/mini6410/games/output/include/SDL  -I/opt/mini6410/games/output/include/"
LDFLAGS="-L/opt/mini6410/games/output/lib -ljpeg -lts -lpng -liconv"
# make  
# make install

 

 

4.SDL_ttf的编译

# cd /opt/mini6410/games
# tar xvzf /tmp/SDL_ttf-2.0.9.tar.gz
# cd SDL_ttf-2.0.9
# ./configure --host=arm-linux --prefix=/opt/mini6410/games/output --enable-shared --enable-static
--disable-sdltest
--with-freetype-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/
--with-sdl-prefix=/opt/mini6410/games/output/ CFLAG="-I/opt/mini6410/games/output/include"
LDFLAGS="-L/opt/mini6410/games/output/lib -lSDL -lts -liconv -lfreetype"

在编译之前手工修改 Makefile,去掉OpenGL 相关处理:
# vi Makefile
 
定位到 123 行,将以下内容中的“-I/usr/include -DHAVE_OPENGL”删除(红色字体部分):
CFLAGS = -g -O2 -I/usr/include/freetype2 -I/opt/mini6410/games/output/include/SDL
-D_GNU_SOURCE=1 -D_REENTRANT   -I/usr/include -DHAVE_OPENGL
 
再定位到 143 行,将:
GL_LIBS =   -L/usr/lib -lGL
改成
GL_LIBS = 
 再定位到 266 行,将:
glfont_LDADD = libSDL_ttf.la   -L/usr/lib -lGL -lm
改成
glfont_LDADD = libSDL_ttf.la -lm
 
清空源代码文件  glfont.c 中的源代码  (先删除,再用 vi 创建):
# rm glfont.c.-f
# vi glfont.c
 
在 vi 编辑器中输入以下内容并保存:
void main() {}
 

# make  
# make install

5. 编译SDL_mixer库
 # cd /opt/mini6410/games
# tar xvzf /tmp/SDL_mixer-1.2.9.tar.gz
# cd SDL_mixer-1.2.9
# ./configure  --enable-music-mp3-mad-gpl  --enable-music-mp3=no  --host=arm-linux
--prefix=/opt/mini6410/games/output  --with-sdl-prefix=/opt/mini6410/games/output  --enable-shared
--enable-static
# make
# make install
 

通过以下命令打包 SDL 类库和其它相关的类:
# cd /opt/mini6410/games/output/
# tar cvzf sdl_setup.tar.gz bin lib share
 
将 sdl_setup.tar.gz 拷贝到开发板上,在根目
录进行解压:
@# cd /
@# tar xvzf /sdcard/sdl_setup.tar.gz

 

这样SDL库就更新完了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SDL2.2.0.1的移植,包含SDL的每个参数的意思,包含交叉编译器的安装,包含移植过程中出错的处理方法。 --prefix=/usr/arm 安装SDL路径 --enable-shared=yes 构建共享库[开启] --enable-nasm 装配blitters x86上的nasm(汇编器) --enable-oss 启用支持oss声音的API --enable-alsa 启用支持ALSA声音的API --enable-alsa-shared 启用动态加载ALSA声卡的API --enable-pulseaudio 启用pulseaudio(脉冲音频) --enable-pulse-shared 启用动态加载脉冲音频支持 --enable-arts 启用支持Analog Read Time Synthesizer(模拟实时合成器) --enable-arts-shared 启用动态加载ARTS声卡的支持 --enable-joystick 启用joystick(控制杆)系统 --enable-cdrom 启用只读光盘系统[关闭] --enable-threads 启用多线程子系统 --enable-timers 启用计时器子系统 --enable-endian 大小端设置 --enable-file 启用文件系统 --enable-esd 支持Enlightened(文明)声音后台程序 --enable-nas 支持NAS(网络连接存储)声卡API --enable-diskaudio 支持磁盘写入声卡驱动 --enable-dummyaudio 支持虚拟声卡驱动 --enable-altivec 使用altivec装配位块传送器在PPC上 --enable-video-x11 使用x11视频驱动 --enable-dga 允许使用x1 DGA代码 --enable-video-x11-vm 使用x11 vm延长全屏 --enable-video-x11-dgamouse 使用x11 DGA鼠标事件 --enable-video-x11-xv 使用x11 xv音像延长视频 --enable-video-x11-xinerama 启动x11多银幕支持 --enable-video-dga 使用DGA2.0视频驱动 --enable-video-directfb 启用DirectFB视频驱动 --enable-video-photon 使用QNX(嵌入式实时系统)光子视频驱动 --enable-video-ps2gs 使用PS(游戏机)2 GS视频驱动 --enable-video-opengl 包括OpenGL(开放图形语言)创建上下文 --enable-video-pth 使用GNU pth库对多线程 --enable-pthreads 使用POSIX线程(可移植操作系统)对多线程 --enable-pthread-sem 使用多线程信号 --enable-input-events 使用Linux-2.4统一输入接口 --enable-input-tslib 使用Touchscreen库输入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘摇的海啸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值