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

罗索

自己编译SDL游戏!A780,E680i/g中交叉编译SDL正确方法

jackyhwei 发布于 2011-04-06 16:56 点击:次 
终于让我弄懂了交叉编译sdl的正确方法,这次实测几个sdl的例子,运行的都很正常,也没有出现比较卡的情况,不敢独享,写个教程也让大家试试。其实devezx上已经有详细的交叉编译方法了,我这里只是总结一下,顺便弄成中文。
TAG:

终于让我弄懂了交叉编译sdl的正确方法,这次实测几个sdl的例子,运行的都很正常,也没有出现比较卡的情况,不敢独享,写个教程也让大家试试。



其实devezx上已经有详细的交叉编译方法了,我这里只是总结一下,顺便弄成中文。


首先准备ezxsdl package。去下面网站下载sdl和补丁:


http://devezx.czetx.frih.net/index.php?page=ezxsdl



由于这里只编译sdl,所以我们只用准备以下几个文件:


sdl-1.2.7.tar.bz2


以及patches and headers for sdl中的


sdl_ezx_patches.tar.gz


ezx_headers.tar.gz



然后是编译环境,我是在cygwin下交叉编译的,sdk用的是dev-ezx-2.0,arm-linux的交叉编译环境建立我就不再重复了。最后是准备tmake-1.8,用于生成makefile。


一切准备就绪,下面交叉编译sdl。



1. 在根目录下建立一个叫sdl的目录


cd /sdl


mkdir bin etc include lib usr tmp man man/man1



2. 复制dev-ezx-0.2的include和lib目录到对应文件夹


  (包括之前从手机里复制出的库文件)


cd `where dev-ezx-0.2 is`


cd include


cp -r * /sdl/include


cd ../lib


cp -r * /sdl/lib



3. 解压缩 ezx_headers.tar.gz 到/sdl/include/ezx,sdl_ezx_patches.tar.gz 到/sdl


解压缩 sdl-1.2.7.tar.bz2 到/sdl


tar xjfv sdl-1.2.7.tar.bz2



4. 为sdl打补丁!


此处最为重要,用alebm整理的sdl(for e680)补丁,才能解决sdl图形程序运行时白屏一闪而过的情况,直接交叉编译sdl是无法正常在e680的ezx系统上运行的。


cd sdl-1.2.7


patch -np1 -i ../agawa-piro-mickey.patch


patch -np1 -i ../alebm-sdl127-ezx.patch


patch -np1 -i ../mouse.patch



注:4-5步骤可以用附件中的build.sh一次执行,直接复制到/sdl目录中,执行 ./build.sh 即可完成sdl的编译。



5. 运行如下命令配置sdl


执行一下配置命令,在/sdl/arm目录中生成编译好的sdl库和头文件


./configure --prefix=/sdl/arm --exec-prefix=/sdl/arm


        --host=arm-linux --disable-debug --enable-cdrom --enable-threads


        --enable-timers --enable-endian --enable-file --enable-oss


        --disable-alsa --disable-esd --disable-arts --disable-diskaudio


        --disable-nas --disable-esd-shared --disable-esdtest


        --disable-mintaudio --disable-nasm --disable-video-x11


        --disable-video-dga --disable-video-fbcon --disable-video-directfb


        --disable-video-ps2gs --disable-video-xbios --disable-video-gem


        --disable-video-dummy --disable-video-opengl --enable-input-events


        --enable-pthreads --disable-video-picogui --enable-video-qtopia


        --enable-dlopen



接着就是


make


make install


然后大功告成!




测试一下吧,sdl的例子都在test目录中躺着呢,只不过要直接在手机上运行需要修改源码中的窗口大小640x480为a780的屏幕大小320x240。


需要注意的是,要编译sdl不仅需要引用sdl的头文件和库,还要在链接时加入 -dmain=sdl_main 和 -lqte-mt -lpthread,不然会提示“segmentation fault”。


附件中有tmake的模版和用于编译链接程序的脚本tgen.sh,用法是将linux-a780-sdl-g++文件夹复制到tmake的lib/qws中,修改其中的相应目录为你的sdl编译路径。然后将tgen.sh放到要编译的sdl程序文件夹中,执行./tgen.sh即可。



关于“segmentation fault”,之前我编译的sdl程序放到手机中运行,都会提示segmentation fault。之后研究了一下别人的makefile,发现是链接时没有加入-dmain=sdl_main 和 -lqte-mt -lpthread 引起的。保险起见,我把cflags改成了这样:tmake_cflags = -pipe -dqws -dmain=sdl_main -d_reentrant  之后问题解决!



附件中有我改好的几个例子和可执行程序,都在sdl_test.rar中。附带一个火焰效果的例子 xflame-1.0.rar,运行起来很流畅!



sdl_test.rar中的例子,都有编译好的可执行程序。如果只想测试,比如testalpha这个,可以将目录中的alphi、icon.bmp及libsdl-1.2.so.0复制到手机,按运行qt程序的方法执行程序。


ps:这个例子效果不错



三楼新增一个blockrage-0.2.3,源码和可执行文件都有。


ezxSDL package
http://devezx.czetx.frih.net/index.php?page=package
Download and install this package in order for some games to work. This package will work with Motorola A780 & E680i/g only.

SDL tutorial and files for Motorola EZX devices
http://devezx.czetx.frih.net/index.php?page=ezxsdl

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201104/11169.html]
本文出处:devezx.czetx.frih.net 作者:秩名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容