3、交叉编译pkg-config
目标平台:LOONGSON-1B开发板
内核:Linux 3.0
编译平台:ubuntu10.04
交叉工具链:gcc-3.4.6-2f
一、简介
pkg-config是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件,它向用户向程序提供相应的库路径、版本号等信息。
二、下载pkg-config源码包
进入http://pkgconfig.freedesktop.org/releases/下载一个pkg-config稳定版本源码包,这里选择pkg-config-0.23.tar.gz。
三、交叉编译pkg-pkgconfig步骤
#tar jxf pkg-config-0.23.tar.gz
#cd pkg-config-0.23
pkg-ocnfig的编译依赖于glib的libglib库,而pkg-config-0.23源码里面自带了glib-1.2.10的源码包,并且在configure也会同时进入glib-1.2.10进行配置。这里不使用其自带的glib-1.2.10,改为使用自己下载的glib-2.24.2源码包进行共同配置编译,下面讲述配置编译过程:
a)拷贝glib-2.24.2的源码包到pkg-config-0.23目录下:
#cp glib-2.24.2 ./pkg-config-0.23 -rf
#cd glib-2.24.2
#make clean
b)分别修改pkg-config-0.23目录下configure、configure.in、partial_glib.h,把三个文件里的glib-1.2.10均修改为glib-2.24.2:
configure:
Line 898:ac_subdirs_all='glib-1.2.10'
修改为:ac_subdirs_all='glib-2.24.2'
Line 20307:subdirs="$subdirs glib-1.2.10"
修改为:subdirs="subdirs glib-2.24.2"
configure.in:
Line 125:AC_CONFIG_SUBDIRS(glib-1.2.10)
修改为:AC_CONFIG_SUBDIRS(glib-2.24.2)
partial-glib.h:
Line 4:#include "glib-1.2.10/glib.h"
修改为:#include "glib-2.24.2/glib.h"
c)拷贝glib-2.24.2/glig/glib.h到glib-2.24.2/目录下:
#cp glib-2.24.2/glib.h ./glib-2.24.2/
d)在pkg-config-0.23/目录下创建配置glib-2.24.2时需要的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
e)configure pkg-config源码包:
#./configure --prefix=/home/tools/gtk/pkg-config_install --host=mipsel-linux CPPFLAGS='-I/home/tool/gtk/zlib_install/include' LIBS='-L/home/tool/gtk/zlib_install/lib -lz' --cache-file=mipsel-linux.cache
f)configure完成后,把pkg-config-0.32/目录下的Makefile、Makefile.in、Makefile.am里的glib-1.2.10修改为glib-2.24.2, libglib.la修改为glib/libglib-2.0.la:
三个文件里需要替换的地方比较多,这里直接使用vim的%s指令进行配置。
g)编译安装
#make && make install
编译安装成功后,在--prefix指定的目录下生成需要移植的bin、lib、include和shared等目录。