(未完成)ARM-linux 移植 SDL
2.
交叉编译SDL
编译SDL前先要编译其依赖库 tslib、libiconv

Tslib
$ cd tslib-1.4
$ sudo apt-get install libtool automake autoconf
$ ./autogen.sh
$ echo "ac_cv_func_malloc_0_nonnull=yes"> arm-linux.cache
$ ./configure --prefix=/xyq/cross_compile/SDL --host=arm-linux --cache-file=arm-linux.cache
$ make
$ make install
Libiconv
$ cd ../libiconv-1.14
$ ./configure --prefix=/xyq/cross_compile/SDL --host= arm-linux --with-gnu-ld
$ make
$ make install
SDL
$ cd ../SDL-1.2.14
$
./configure --prefix=/xyq/cross_compile/SDL --host= arm-linux
--build=i386 --with-gnu-ld --disable-video-nanox
--disable-video-qtopia --disable-pulseaudio --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 CPPFLAGS="-I/xyq/cross_compile/SDL/include" LDFLAGS="-L/xyq/cross_compile/SDL/lib -lts-liconv"
$ make
$ make install
3. SDL测试程序交叉编译
SDL的测试程序在SDL源码目录的test目录下。
1)进入test目录,执行如下configure脚本生成Malefile
$ ./configure --prefix=/xyq/cross_compile/SDL --host=arm-linux
NM=arm-linux-nm LD=arm-linux-ld
CC=arm-linux-gcc
CXX=arm-linux-g++ AR=arm-linux-ar
2)Makefile默认是编译所有测试程序,但是在ARM上,游戏杆和opengl测试无法编译通过,要从Makefile文件中TARGETS去掉testgl,testjoystick的编译.
另外,默认的测试的路径指向是X86版,最简单的办法,可以手工修改Makefile调成ARM版。将
改成:

之后 $ make 将在当前目录生成可执行文件。
4. SDL程序的测试
先将SDL编译结果移植到ARM,分别是将编译得到的lib、bin分别拷到ARM的/usr/lib、/usr/bin。再将测试可执行文件拷到ARM,注意要改变其可执行权限。
注意SDL的运行时必须指定MOUSE设备.如使用tslib,则用如下命令设置SDL使用tslib.
$ export SDL_MOUSEDRV=TSLIB
如果没有任何输入设备,则环境变量 export SDL_NOMOUSE=1 ,否则初始化会提示:Couldn't initializeSDL:Unable to open mouse
接下来用SDL自带的testalpha来测试是否SDL下tslib是否正常工作.运行这个程序,如果在点击处准确出现黄色色块,表示tslib与SDL配合完合成功,以下是在320*240bpp=16的开发板的实测的截图.

5. SDL_image移植
有SDL本身所支持的仅仅是bmp格式的图片,要使用其他格式的图片就要使用其扩充库SDL_image,以下是编译过程:
$ cd ../SDL_image-1.2.8
$ ./autogen.sh
$ ./configure --prefix=/xyq/cross_compile/SDL --host= arm-linux –-enable-shared --build=i386 –-enable-static -–enable-bmp
-–enable-gif -–enable-jpg -–enable-png -–enable-tif -–enable-pnm -–enable-xpm –disbale-sdltest
SDL_CFLAGS=”-I/xyq/cross_compile/SDLnclude/SDL”
SDL_LIBS=”-L/xyq/cross_compile/SDL/lib -lSDL”
LIBPNG_CFLAGS="-I/xyq/cross_compile/SDL/include"
LIBPNG_LIBS="-L/xyq/cross_compile/SDL/lib-lpng" CPPFLAGS="-I/xyq/cross_compile/SDL/include"
LDFLAGS="-L/xyq/cross_compile/SDL/lib -ljpeg-lts -liconv"
$ make
$ make install
(未完成)ARM-linux 移植 SDL的更多相关文章
- arm linux 移植 x265
背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...
- Linux 安装 go 以及 arm linux 移植 go
背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...
- arm linux 移植 MQTT (paho、mosquitto)
前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...
- arm linux 移植 ffmpeg 库 + x264
背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...
- arm linux 移植 PHP
背景: PHP 是世界上最好的语言. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 php :7.1.30 zlib :1.2.11 libxml ...
- arm linux 移植支持 HP打印机
背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...
- arm linux 移植 gdb/gdbserver
背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...
- arm linux 移植 udhcp 与 使用
背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...
- arm linux 移植 rsync
背景: 在产品开发中可以使用rsync进行大文件的拷贝,断点续传. host平台 :Ubuntu 16.04 arm平台 : 3531d rsync :3.1.3 arm-gcc :4.9.4 ...
随机推荐
- 在 delphi (Object Pascal 语言)中,使用 array 关键字进行数组定义。
如果需要定义二维数组可以采取以下定义形式: 一.静态数组定义 静态数组定义,通常用于数组元素的数目确定的情况.定义形式如下: 示例: 1 2 3 4 5 6 7 8 9 10 11 type // ...
- UK Biobank专题
这个时代的生信,统计遗传,不懂或不会用这个数据库就说不过去了. 看看10年GWAS里是如何定位和评价UK biobank的: For the near future, the UK Biobank i ...
- TextFX Notepad++
textFx Notepad++ - 国内版 Bing https://cn.bing.com/search?FORM=U227DF&PC=U227&q=textFx+Notepad% ...
- JEECG Hibernate 自动更新 持久化
Hibernate不调用update却自动更新 - 七郎 - 博客园http://www.cnblogs.com/yangy608/p/4073941.html hibernate自动更新持久化类的问 ...
- Visual Studio 2019更新到16.2.2
Visual Studio 2019更新到16.2.2 此次更新的变化有以下几点: (1)修复了Visual Studio在关闭时的停止响应问题.(2)修复CVE-2019-1211权限提升漏洞.(3 ...
- Docs-.NET-C#-指南-语言参考-预处理器指令:#region(C# 参考)
ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#region(C# 参考) 1.返回顶部 1. #region(C# 参考) 2015/07/20 利用 #region,可以 ...
- ISO/IEC 9899:2011 条款6.5.16——赋值操作符
6.5.16 赋值操作符 语法 1.assignment-expression: conditional-expression unary-expression assignment-opera ...
- PLSQL流函数代码 540页 【我】
540页 流函数代码 -- Create table create table STOCKTABLE ( TICKER ), TRADE_DATE DATE, OPEN_PRICE NUMBER, C ...
- System.getProperties 获取当前的系统属性
getProperties public static Properties getProperties() 确定当前的系统属性. 首先,如果有安全管理器,则不带参数直接调用其 checkProper ...
- laravel5.1框架model类查询实现
laravel框架model类查询实现: User::where(['uid'=8])->get(); User类继承自Model类:Illuminate\Database\Eloquent\M ...