• 移植SDL最新版本(转)


    原文出自: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 

  • 相关阅读:
    X Window研究笔记(5)
    R语言中 %in%操作符
    R语言中的for循环结构
    R语言中将数据框中的连续型变量转变为类别型变量
    R语言中fig函数,图形布局的精细控制
    R语言中向量取唯一值
    R语言中计算最大值、最小值、平均数、中位数、方差、标准差、协方差、相关系数
    R语言中的数组
    R语言中同时对数据框的多列进行排序
    R语言中求数据框的每一列值的最大值、最小值、平均数、中位数、方差、标准差
  • 原文地址:https://www.cnblogs.com/xihong2014/p/7290968.html
Copyright © 2020-2023  润新知