SDL以及扩展库的交叉编译过程简介

    近来用c语言加SDL图形工具做了一个名曰健康卫士的应用软件。软件的是准备移植到开发板上的,但就是交叉编译环境配置的让人纠结。至于ifconfigure的修改前人有了深刻的实践,我在应用中发现了一些错误,是故在此总结:

具体配置过程:

本人将SDL 交叉编译的相关都安装在/opt/arm目录下

相关简介:
SDL官方网站 http://www.libsdl.org/
SDL编译移植(Up-teach6410平台)
系统环境:linux
移植环境:arm11
编译工具链:gcc-4.3.1(系统默认工具链)

1.1 编译jpeg-7
软件名称 libjpeg
功能描述 libjpeg是一个用c语言编写支持jpeg解码、编码的库
下载地址 http://linux.softpedia.com/get/Programming/Libraries/libjpeg-160.shtml
软件版本 jpegsrc.v7.tar.gz
依赖关系 默认

1.2 编译libiconv-1.14
软件名称 libiconv
功能描述 libiconv库为需要做转换的程序,实现了一个字符编码到另一个字符编码的转换
下载地址 http://www.gnu.org/software/libiconv/#downloading
软件版本 libiconv-1.14.tar.gz
依赖关系 默认

1.3 编译libpng-1.5.10
软件名称 libpng
功能描述 libpng是多种应用程序所使用的解析PNG图形格式的函数库
下载地址 http://www.libpng.org/pub/png/libpng.html
软件版本 libpng-1.4.2.tar.gz
依赖关系 默认

1.4 编译SDL-1.2.14
软件名称 SDL
功能描述 SDL是一个自由的跨平台的多媒体开发包,适用视频音频和其他应用的软件
下载地址 http://www.libsdl.org/download-1.2.php
软件版本 SDL-1.2.14.tar.gz
依赖关系 默认

1.5 编译SDL_image-1.2.10
软件名称 SDL_image
功能描述 SDL_image是用于处理图形文件的开源函数库
下载地址 http://www.libsdl.org/projects/SDL_image/
软件版本 SDL_image-1.2.10.tar.gz
依赖关系 SDL libpng libjpeg

1.6 编译SDL_gfx-2.0.22
软件名称 SDL_gfx
功能描述 图形库,也就是传统的一些图形操作,几个基本的功能包括了缩放,旋转,几何图形绘制,FPS控制
下载地址 http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.22.tar.gz
软件版本 SDL_gfx-2.0.22.tar.gz
依赖关系 SDL

1.7 编译SDL_ttf-2.0.10
软件名称 SDL_ttf
功能描述 SDL_ttf是让应用程序能渲染汉字的扩展库
下载地址 http://www.libsdl.org/projects/SDL_ttf/
软件版本 SDL_ttf-2.0.10.tar.gz
依赖关系 SDL freetype libiconv

SDL-1.2.14
 
./configure --prefix=/opt/arm --disable-video-nanox -disable-video-qtopia --disable-static --enable-shared --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 --disable-joystick --disable-input-tslib -enable-video-fbcon --host=arm-linux

libiconv-1.14

./configure  --prefix=/opt/arm --disable-static --enable-shared  --with-libiconv-prefix=/opt/arm --host=arm-linux cc=arm-linux-gcc

jpeg-7

./configure  --prefix=/opt/arm --disable-static --enable-shared   --host=arm-linux   cc=arm-linux-gcc

libpng-1.5.10

./configure  --prefix=/opt/arm --disable-static --enable-shared   --host=arm-linux   cc=arm-linux-gcc

SDL_image-1.2.10

./configure --prefix=/opt/arm --host=arm-linux --disable-static --enable-shared --with-sdl-prefix=/opt/arm CPPFLAGS=-I/opt/arm/include/SDL  LDFLAGS=-L/opt/arm/lib

SDL_gfx-2.0.22

./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

freetype-2.1.10

./configure --prefix=/opt/arm --disable-static --enable-shared   --host=arm-linux

SDL_ttf-2.0.10

 ./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/  CPPFLAGS=-I/opt/arm/include/  LDFLAGS="-L/opt/arm/lib  -liconv" --host=arm-linux
 
#手工修改Makefile,去掉OpenGL相关处理
# 去掉-I/usr/include -DHAVE_OPENGL
# 将GL_LIBS 改为 GL_LIBS =
# glfont_LDADD改为glfont_LDADD = libSDL_ttf.la -lm
#手工修改 glfont.c.全部清空,写入如下
 #int main(int argc ,char **argv) { return 0;}


在编译过程中遇到了这样的错误:

[root@localhost SDL_jiankang]# arm-linux-gcc main.c -o m -I/opt/arm/include -L/opt/arm/lib -lSDL -lSDL_image -lSDL_ttf 
/usr/local/arm/4.3.1-eabi-armv6/usr/bin-ccache/../lib/gcc/arm-samsung-linux-gnueabi/4.3.1/../../../../arm-samsung-linux-gnueabi/bin/ld: warning: libiconv.so.2, needed by /opt/arm/lib/libSDL_ttf.so, not found (try using -rpath or -rpath-link)
/usr/local/arm/4.3.1-eabi-armv6/usr/bin-ccache/../lib/gcc/arm-samsung-linux-gnueabi/4.3.1/../../../../arm-samsung-linux-gnueabi/bin/ld: warning: libfreetype.so.6, needed by /opt/arm/lib/libSDL_ttf.so, not found (try using -rpath or -rpath-link)


通过翻译错误发现是libSDL_ttf.so 需要libiconv.so.2,libfreetype.so.6 这是未找到依赖库的原因

解决办法便是在编译时加上-lfreetype -liconv



你可能感兴趣的:(SDL以及扩展库的交叉编译过程简介)