glib移植过程

 在ARM上移植glib库很麻烦,所依赖的包很多,本次移植涉及到的包主要有zlib,pcre,libffi,ncurses(为了libtinfo),libmount.。

由于新版本引入了很多配置工具,我选用了老一点的版本,zlib-1.2.11.tar.gz, pcre-8.37.tar.gz,libffi_3.2.1.orig.tar.gz,ncurses-6.0.tar.gz,libmount_2.33.2, glib-2.53.7.tar.xz。官网上都可以下载。

先写一个shell脚本,免得重复配置,根据自己编译链位置修改

#!/bin/bash

export PATH=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf:$PATH

./configure --prefix=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf \
CC=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
LD=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ld \
AR=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar \
AS=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-as \
STRIP=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip \
RANLIB=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ranlib \
--host=arm-linux-gnueabihf \
#LIBFFI_CFLAGS="-I/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/lib/libffi-3.2.1/include" \
#LIBFFI_LIBS="-lffi -L/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/lib" \
#ZLIB_CFLAGS="-I/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/include" \
#ZLIB_LIBS="-lz -L/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/lib" \
#TINFOLIB_LIBS="-ltinfo -L/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/lib" \
PKG_CONFIG_PATH=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/lib \
LD_LIBRARY_PATH=/usr/local/arm/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/lib

#echo -e "\n\tconfigure ok\n"

make
if [ $? == 0 ]; then
	make install
else
	echo -e "\n\tmake fail\n"
fi

这样可以编译安装zlib,pcre, libffi。

对于libtinfo,编译ncurses

./configure 中加入--without-cxx --without-cxx-binding --without-ada --without-manpages --without-progs --without-tests --with-shared

安装后,在lib目录中建立链接

ln -s libncurses.so.6 libtinfo.so.6
ln -s libtinfo.so.6 libtinfo.so

然后编译libmount,至此,所有依赖库编译完。

接下来编译glib,我选择的glib-2.53.7.tar.xz版本,新版本的meson没配好。

[root@linux glib-2.5.3]# echo glib_cv_stack_grows=no>>arm-linux.cache
[root@linux glib-2.5.3]# echo glib_cv_uscore=no>>arm-linux.cache
[root@linux glib-2.5.3]# echo glib_cv_have_qsort_r=no>>arm-linux.cache
[root@linux glib-2.5.3]# echo ac_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
[root@linux glib-2.5.3]# echo ac_cv_func_posix_getgrgid_r=yes>>arm-linux.cache
[root@linux glib-2.5.3]# echo ac_cv_type_long_long=yes>arm-linux.cache

设置配置文件,然后在shell文件中加入,并取消注释

--cache-file=arm-linux.cache \
--disable-selinux --disable-xattr --disable-libelf

这样就可以成功编译glib了。

对于编译glib出现的gio error,可能是使用了其它的编译器先编译了产生了一些文件没有清理干净,对于网上其它文章说的修改Makefile没必要,重新解压一份就行了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值