基于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
三:编译选项设置
编译之后的library如下:
四:总结
我在编译glib的时候,开始出现问题的地方始终是在gettext,由于我的交叉编译工具中并没有gettext,所以需要重新编译一份gettext,我这里选用的版本是:gettext0.14.2版本,这是由于我的交叉编译工具的原因,无法选用更高版本的。
作者: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版本,这是由于我的交叉编译工具的原因,无法选用更高版本的。
相关文章推荐
- 华为云基于Maven开发出现的问题总结
- iOS swift 总结NavigationController出现问题及解决方法
- 数组长度判断时出现的诡异问题总结
- Linux内核---2.TQ2440系统移植出现的问题总结
- 经常出现exeplorer.exe错误的问题的总结
- pip install polyglot 出现的问题总结
- spring boot 1.5.6 配置mybaits-plus 多模块配置 ,出现的问题 总结
- hessian java发布远程服务中出现的 “com.caucho.hessian.client.HessianConnectionException HessianProxy ”的问题原因总结:
- ubuntu下编译Android出现的问题 总结
- 基于sae平台的servlet建立微信企业号问题总结
- myeclipse下Maven配置SSM框架出现的问题总结
- msp430在ccsv5下出现的问题总结
- 劲舞团出现问题的解决方法总结
- 未将对象引用设置到对象的实例--可能出现的问题总结
- 基于上一篇博客 有些童鞋出现的共性问题解决
- linux系统下基于mono部署asp.net,使用ef6与mysql出现的问题【索引】
- iOS8 出现的新问题总结
- windows 2003 软件Raid 5一块硬盘出现问题重建总结
- 总结前端面试过程中最容易出现的问题
- 在基于是script的Calculation view中使用CASE ,出现语法错误的问题