原文出自:http://blog.csdn.net/flyyang123456789/article/details/17223485

首先 将所要移植的包准备好  有 SDL2-2.0.1.tar.gz  SDL2_gfx-1.0.0.tar.gz  SDL2_image-2.0.0.tar.gz  SDL2_ttf-2.0.12.tar.gzSDL2_mixer-2.0.0.tar.gz SDL2_net-2.0.0.tar.gz
tslib-1.4.tar.bz2(gfx 依赖)freetype-2.4.8.tar.bz2(ttf依赖) libmad-0.15.1b.tar.gz (mixer 依赖)

此次移植所有的包 请到 http://download.csdn.net/detail/flyyang123456789/6684551处下载
首先 交叉编译 SDL2-2.0.1.tar.gz 
解压:tar zvxf SDL2-2.0.1.tar.gz   cd SDL2-2.0.1
然后配置 # ./configure --prefix=/opt/arm/--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 --enable-input-tslib --host=arm-Linux --build=i386
然后 make 编译  make 会出现错误 如下 
cc1: warning: include location "/usr/include/dbus-1.0" is unsafe forcross-compilation
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:In function 'SDLTest_RandomUint64BoundaryValue':
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:300:error: 'ULLONG_MAX' undeclared (first use in this function)
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:300:error: (Each undeclared identifier is reported only once
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:300:error: for each function it appears in.)
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:In function 'SDLTest_RandomSint64BoundaryValue':
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:436:error: 'LLONG_MAX' undeclared (first use in this function)
/root/桌面/sdl2/SDL2-2.0.1/src/test/SDL_test_fuzzer.c:437:error: 'LLONG_MIN' undeclared (first use in this function)
make: *** [build/SDL_test_fuzzer.o] 错误 1

原因SDL_test_fuzzer.c 内ULLONG_MAX  LLONG_MAX  LLONG_MIN 没有定义 经查找发现 这三个变量是在 /usr/include/limits.h 下 宏定义的
然后将在 limits.h下 宏定义 
#define ULLONG_MAX 18446744073709551615
#define LLONG_MAX  9223372036854775807
#define LLONG_MIN  (-LLONG_MAX - 1)

拷贝到 SDL_test_fuzzer.c 或者其对应的头文件SDL_test_fuzzer.h 下即可这里我是拷贝到 头文件 SDL_test_fuzzer.h 下的
然后再次make  即可通过  然后makeinstall 安装成功

交叉编译 SDL2_gfx-1.0.0.tar.gz
解压: tar zvxf SDL2_gfx-1.0.0.tar.gz  cd SDL2_gfx-1.0.0
配置: # ./configure --prefix=/opt/arm --disable-static--enable-shared --with-sdl-prefix=/opt/arm CPPFLAGS=-I/opt/arm/include/SDL  LDFLAGS=-L/opt/arm/lib --host=arm-linux  --enable-mmx=no
然后make 会发现错误  原因在/usr/local/lib 下找不到 libts.la gfx 要有tslib库的支持 实现触摸屏

发现没有tslib库 那我们就 交叉编译tslib库提供给gfx 使用
交叉编译 tslib-1.4.tar.bz2 解压  tar jvxf tslib-1.4.tar.bz2 cd tar jvxftslib-1.4
配置:# ./configure --host=arm-linux-gcc --prefix=/opt/arm--enable-debug=no
然后 make make install 即可  找到 tslib 库文件 使用cp 拷贝到 /usr/local/lib 下 即可

然后回到 gfx 再次 make 即可通过 然后 make install   安装成功

交叉编译 SDL2_image-2.0.0.tar.gz
解压 : tar jvxf SDL2_image-2.0.0.tar.gz  cd SDL2_image-2.0.0 
配置:# ./configure --prefix=/opt/arm --host=arm-linux--disable-static --enable-shared --with-sdl-prefix=/opt/arm CPPFLAGS=-I/opt/arm/include/SDL2  LDFLAGS=-L/opt/arm/lib
然后 make  makeinstall 安装成功

在交叉编译 SDL2_ttf-2.0.12.tar.gz之前 要先 交叉编译 freetype-2.4.8.tar.bz2 这个包 是 ttf 所依赖的包
解压 tar jvcxf freetype-2.4.8.tar.bz2  cd freetype-2.4.8
配置 : ./configure --prefix=/opt/arm --disable-static--enable-shared   --host=arm-linux
然后 make  makeinstall  即可

交叉编译 SDL2_ttf-2.0.12.tar.gz
解压  tar zvxfSDL2_ttf-2.0.12.tar.gz  cd SDL2_ttf-2.0.12
配置:#  ./configure--prefix=/opt/arm --disable-static --enable-shared --disable-sdltest --with-sdl-prefix=/opt/arm--with-freetype-prefix=/opt/arm/ CPPFLAGS=-I/opt/arm/include/SDL2 LDFLAGS=-L/opt/arm/lib --host=arm-linux
然后 make  会出现错误如下
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:skipping incompatible /usr/lib/libGL.so when searching for -lGL
/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
collect2: ld returned 1 exit status
make: *** [glfont] 错误 1

解决办法
   打开Makefile  文件 手工修改Makefile,去掉OpenGL相关处理 
   在第 222 行去掉 -I/usr/include -DHAVE_OPENGL
   在第 238 行将GL_LIBS =  -L/usr/lib-lGL  改为GL_LIBS  =  即去掉  -L/usr/lib -lGL
   在第383 行 去掉 -L/usr/lib -lGL
   
然后 再次 make  即可通过 最后 make install  即可安装成功

下面是交叉编译 SDL2_mixer-2.0.0.tar.gz 
在交叉编译 SDL2_mixer-2.0.0.tar.gz之前 我们要先编译 libmad-0.15.1b.tar.gz
libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好
交叉编译 libmad-0.15.1b.tar.gz
解压:tar zvxf libmad-0.15.1b.tar.gz   cd libmad-0.15.1b
配置:./configure --prefix=/opt/arm/ --host=arm-linux
然后 make  在make 后 会出现以下错误

cc1: error: unrecognized command line option "-fforce-mem"

解决方法 是  打开 Makefile 文件 在第129 将其 -fforce-mem 去掉
原因是gcc 3.4 或者更高版本,已经将其去除了,所以会出现上面的错误!
然后 保存后 再次 make  会通过 make install 即可

交叉编译 SDL2_mixer-2.0.0.tar.gz 
解压:tar zvxf SDL2_mixer-2.0.0.tar.gzcd SDL2_mixer-2.0.0
配置:./configure --enable-music-mp3-mad-gpl--enable-music-mp3=no --prefix=/opt/arm --host=arm-linux--with-sdl-prefix=/opt/arm CPPFLAGS=-I/opt/arm/include/SDL2  LDFLAGS=-L/opt/arm/lib
然后make(--with-sdl-prefix=/opt/arm好像必须加  不加通不过 )make install  即可成功安装

交叉编译 SDL2_net-2.0.0.tar.gz
解压 tar zvxf SDL2_net-2.0.0.tar.gzcd SDL2_net-2.0.0
配置:# ./configure --prefix=/opt/arm --host=arm-linux--with-sdl-prefix=/opt/arm CPPFLAGS=-I/opt/arm/include/SDL2  LDFLAGS=-L/opt/arm/lib
然后 make(--with-sdl-prefix=/opt/arm好像必须加  不加通不过)  会通过

make install

移植SDL最新版本(转)的更多相关文章

  1. ffmpeg 2.8.1 最新版本 VS2013 可调式动态库

    ffmpeg 2.8.1 最新版本 VS2013 可调式动态库 由于大多数初学者都在想尽各种版本寻求VC编译调试ffmpeg的版本,我也曾经移植过几个版本的ffmpeg到VC上编译.: 链接所需动态库 ...

  2. OpenStack最新版本Folsom架构解析

    OpenStack最新版本Folsom架构解析摘要:OpenStack的第6版,版本代号为Folsom的最新版于今年九月底正式发布,Folsom将支持下一代软件定义网络(SDN)作为其核心组成部分.F ...

  3. 关于最新版本的log4net使用中遇到的问题

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  4. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  5. npm更新到最新版本的方法

    打开命令行工具 npm -v 查看是否是最新版本 如果不是 运行npm i npm g 升级 打开C:\Users\用户名用户目录找到node_modules 文件夹下的npm文件夹,复制一份 打开n ...

  6. 解决浏览器Adobe Flash Player不是最新版本问题

    关键:选择谷歌浏览器的PPAPI版本的flash下载直接安装即可 搜索: Adobe Flash Player PPAPI 下载地址: http://www.wmzhe.com/soft-30259. ...

  7. ubuntu14.04下配置Java环境以及安装最新版本的eclipse

    首先是配置JDK 步骤一:下载最新版本的JDK,链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 步骤二:首先 ...

  8. 谷歌浏览器下载地址 chrome最新版本 百度云地址

    每次下载更新谷歌浏览器是一件很蛋疼的事情.百度搜索"谷歌浏览器下载地址",居然有很多骗子网站,相信有很多不知所以的人中招了.收集了一些chrome的安装包,放在了百度云里面(打不开 ...

  9. FireFox每次访问页面时检查最新版本

    FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...

随机推荐

  1. 20145307陈俊达《网络对抗》Exp4 恶意代码分析

    20145307陈俊达<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  2. 20145315 《Java程序设计》第二周学习总结

    20145315 <Java程序设计>第二周学习总结 教材学习内容总结 类型 类型:整数分为short,int,long形. 字节:长度为一字节. 浮点数:储存小数,float和doubl ...

  3. luogu p1219 八皇后

    https://www.luogu.org/problem/show?pid=1219 经典问题,搜索一遍过. 重点是判断皇后能否在map[x][y]放下的条件 因为是dfs的时候过程中 x 是递增的 ...

  4. jvm 内存调整

    top查看java占用的内存比较多 top - :: up days, :, user, load average: 0.03, 0.05, 0.05 Tasks: total, running, s ...

  5. 何时使用MQ ?

    何时使用MQmq作为一种基础中间件在互联网项目中有着大量的使用. 一种技术的产生自然是为了解决某种需求,通常来说是以下场景: 需要跨进程通信:B系统需要A系统的输出作为输入参数.当A系统的输出能力远远 ...

  6. Rails 5 Test Prescriptions 倒数第2章spring gem 如何让测试变快。分离rails(只有原理)

    Spring speeds up development by keeping your application running in the background Rails程序自动增加:sprin ...

  7. SpringMVC中的参数绑定总结

    众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...

  8. echarta3 北京,上海地图

    1.首先你得到echarts官网下载js,建议下载完整代码,这样你就很容易根据我的路径找到beijing.js 2.把echarts.js和beijingi.js根据你的路径引对,然后就可以copy我 ...

  9. MyBatise代码自动生成时候Oralce的number类型BigDecimal问题

    使用MyBatise的代码自动生成工具时候,即便在配置文件中定义了 <javaTypeResolver> <property name="forceBigDecimals& ...

  10. 菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]

    一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...