近来用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