您的位置:首页 > 其它

基于glib2.12.13编译出现的问题总结

2013-10-06 17:42 183 查看
***************************************************************************************************************************

作者:EasyWave 时间:2013.10.06


类别:Linux 应用glib2.12.13 声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章......

***************************************************************************************************************************

一:Glib简介

glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。glib是Gtk+库和Gnome的基础。glib可以在多个平台下使用,比如Linux、Unix、Windows等。glib为许多标准的、常用的C语言结构提供了相应的替代物。如果有什么东西本书没有介绍到,请参考glib的头文件:glib.h。glib.h中的头文件很容易理解,很多函数从字面上都能猜出它的用处和用法。如果有兴趣,glib的源代码也是非常好的学习材料。

glib的各种实用程序具有一致的接口。它的编码风格是半面向对象,标识符加了一个前缀“g”,这也是一种通行的命名约定。

  使用glib库的程序都应该包含glib的头文件glib.h。如果程序已经包含了gtk.h或gnome.h,则不需要再包含glib.h。

二:Glib库的编译

要想在编译Glib不出现错误,首先需要确定你的嵌入式交叉编译器中是否包含gettext和libiconv,如果你的交叉编译工具中没有这两个库的话,那么编译的过程中会出现以下的错误:

1):gettext错误

You must have either have gettext support in your C library, or use the

GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html

就算是你的主机host中已经安装了gettext的话,也还是会提示此类错误,因此需要首先确定你的嵌入式交叉编译工具中是否包含了gettext。

2): libiconv无法找到iconv.h头文件

如果你的交叉编译工具中没有包含libiconv的话,那么会提示iconv.h无法找到的问题,因此如果交叉编译工具中没有的话,就需要下载libiconv自行编译

3):cannot run test program while cross compiling

对于这个问题,需要仔细看看configure文件,有哪些会提示这类错误,我这里通过修改如下几项就不会提示这类错误了,如下:

echo glib_cv_stack_grows=no

echo ac_cv_type_long_long=yes

echo glib_cv_uscore=no

echo ac_cv_func_posix_getpwuid_r=yes

三:编译选项设置

#!/bin/bash

if [ "$1" == "" ]; then
INSTALL_PATH=`pwd`/_install
else
if [ -d $1 ]; then
INSTALL_PATH=$1
else
exit 1
fi
fi

mkdir -p $INSTALL_PATH

export LDFLAGS="-L$INSTALL_PATH/lib -L/usr/local/arm_linux_4.2/arm-none-linux-gnueabi/lib"
export CFLAGS="-I$INSTALL_PATH/include"
export PKG_CONFIG_PATH="$INSTALL_PATH/lib/pkgconfig"
export LIBS="-lasprintf -lgettextpo -lgettextsrc -lgettextlib -lintl"

#autoreconf -ivf
if [ -f config.h ]; then
make distclean
fi

echo glib_cv_stack_grows=no>arm-linux.cache &&
echo ac_cv_type_long_long=yes>>arm-linux.cache &&
echo glib_cv_uscore=no>>arm-linux.cache &&
echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache&&
./configure --prefix=$INSTALL_PATH \
--host=arm-none-linux-gnueabi \
--build=i486-linux-gnu \
--cache-file=arm-linux.cache \
--enable-maintainer-mode \
--enable-debug=no \
--enable-ansi=no \
--enable-gc-friendly \
--disable-mem-pools \
--enable-threads \
--disable-rebuilds \
--disable-largefile \
--enable-shared=yes \
--enable-static=no \
--enable-fast-install=yes \
--disable-libtool-lock \
--disable-gtk-doc \
--with-gnu-ld

if [ $? -eq 0 ]; then
make
if [ $? -eq 0 ]; then
make install
exit 0
fi
fi
exit 1


编译之后的library如下:



四:总结

我在编译glib的时候,开始出现问题的地方始终是在gettext,由于我的交叉编译工具中并没有gettext,所以需要重新编译一份gettext,我这里选用的版本是:gettext0.14.2版本,这是由于我的交叉编译工具的原因,无法选用更高版本的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: