您的位置:首页 > 其它

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

2013-10-18 17:59 399 查看
    近来用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息