2、交叉编译glib
目标平台:LOONGSON-1B开发板
内核:Linux 3.0
编译平台:ubuntu10.04
交叉工具链:gcc-3.4.6-2f
一、简介
Glib库是Linux平台下最常用的C语言函数库,它是GTK+和Gnome的基础,提供基本的容器、算法、对象系统、OSAPI的适配器等。
二、下载Glib源码包
进入http://ftp.gnome.org/pub/gnome/sources/glib/下载一个Glib稳定版本源码包,这里选择glib-2.24.4.tar.gz。
三、交叉编译glib步骤
#tar jxf glib-2.24.2.tar.bz2
#cd glib-2.24.2
#./configure --prefix=/home/tools/gtk/glib_install --host=mipsel-linux CPPFLAGS='-I/home/tool/gtk/zlib_install/include' LIBS='-L/home/tool/gtk/zlib_install/lib'
出现错误:
checking for growing stack pointer... Configure:error:in '/home/tool/gtk/glib-2.24.2':
configure: error: cannot run test program while cross compiling
错误分析:由于configure不能为交叉编译检查glib_cv_stack_grows等变量,configure无法在目标机上运行测试程序,只能手动指定,将不能自检的变量全部写入cache中,并重新配置:
#echo ac_cv_type_long_long=yes>mipsel-linux.cache
#echo glib_cv_stack_grows=no>>mipsel-linux.chche
#echo glib_cv_uscore=no>>mipsel-linux.chche
#echo ac_cv_func_posix_getpwuid_r=yes>>mipsel-linux.cache
#echo ac_cv_func_posix_getgrgid_r=yes>>mipsel-linux.cache
#./configure --prefix=/home/tools/glib_install --host=mipsel-linux CPPFLAGS='-I/home/tool/gtk/zlib_install/include' LIBS='-L/home/tool/gtk/zlib_install/lib' --cache-file=mipsel-linux.cache
配置成功后,make && make install
make过程中出错错误giounix.c:185:错误:‘SSIZE_MAX’ undeclared(first used in this function)
解决方法:在./glib/giounix.c加入SSIZE_MAX定义:
#define SSIZE_MAX 0x7fffffff
重新make && make install成功,在--prefix指定的目录下生成需要移植的bin、lib、include和shared等目录。