首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

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

2013-10-08 
基于glib2.12.13编译出现的问题总结******************************************************************

基于glib2.12.13编译出现的问题总结
***************************************************************************************************************************
作者: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/bashif [ "$1" == "" ]; thenINSTALL_PATH=`pwd`/_installelseif [ -d $1 ]; thenINSTALL_PATH=$1elseexit 1fifimkdir -p $INSTALL_PATHexport 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 -ivfif [ -f config.h ]; thenmake distcleanfiecho 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-ldif [ $? -eq 0 ]; then        make        if [ $? -eq 0 ]; then                make install                exit 0        fifiexit 1


编译之后的library如下:

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

四:总结

      我在编译glib的时候,开始出现问题的地方始终是在gettext,由于我的交叉编译工具中并没有gettext,所以需要重新编译一份gettext,我这里选用的版本是:gettext0.14.2版本,这是由于我的交叉编译工具的原因,无法选用更高版本的。


热点排行