LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 7469|回复: 18

发帖庆贺!终于在我的arm-2440板子上用上了directfb+gtk了, 附详细的编译过程!

[复制链接]
发表于 2007-6-17 14:38:24 | 显示全部楼层 |阅读模式
对于我这个不满足现状的人来说,如果能够用现有的主流的开源的GUI来做嵌入式开发,真的很有
成就感,想用minigui吧,结果还要买许可证,晕, 这段日子在经历了失败失败再失败的基础上
终于在gtk+在arm平台上的移植迈出了重要一步,现把心得体会及编译过程写出来,这些只是针对我的机器上的编译环境设置的,大家根据自己的情况可以修改:

1, 源码版本,注意最好下载和这些版本号一致的软件,否则不能保证编译能够顺利通过:
    a, gtk+基本的依赖包,注意这些包必须首先编译并安装进你的临时安装目录
        DirectFB-1.0.0    expat-2.0.0 fontconfig-2.4.2 jpeg-6b freetype-2.3.4
        libpng-1.2.16 tiff-3.8.2 zlib-1.2.3
    b, gtk+核心包
        atk-1.19.3 cairo-1.4.6 glib-2.12.9 gtk+-2.10.13 pango-1.16.4
        注意不要使用gtk+-2.10.13之前的版本,那些版本对directfb的支持不是很好

2, 编译环境的设置
    export ARM_HOME=/home/qiang/arm_dev
    export PATH=$PATH:/opt/crosstool/3.4.5/binARM_HOME/softs/pkg_tools
    export TARGET_PREFIX=$ARM_HOME/arm-linux-prefix
    export ARM_CFLAGS="-I$TARGET_PREFIX/usr/include"
    export ARM_LDFLAGS="-L$TARGET_PREFIX/lib -L$TARGET_PREFIX/usr/lib"
    export C_INCLUDE_PATH=$C_INCLUDE_PATHTARGET_PREFIX/usr/include
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export ARM_ROOT=$ARM_HOME/rootfs
    export TARGET=arm-linux


3, 现给出自己的编译脚本,可能脚本自己写的太随意了,但思路还算清晰,这些脚本把编译好
    的软件打成了许多包:
a,  编译用的脚本模板文件:
# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/xxx"
BD_PACKAGE_NAME=
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS=
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS=
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT=
BD_PACKAGE_DOC_CONTENT=
BD_PACKAGE_LOCALE_CONTENT=
BD_PACKAGE_BIN_CONTENT=

# Set the strip variables
BD_STRIP_OPTIONS="--strip-debug"
BD_STRIP_CONTENT=

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

# Get package base directory path
pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

# Strip specialy symbols
if [ ! -z "$BD_STRIP_CONTENT" ]; then
   echo "->Stip unneeded symbols..."
   arm-linux-strip $BD_STRIP_OPTIONS $BD_STRIP_CONTENT
fi

# Compress and make packages
if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error

b, 编译zlib用的脚本
export CC="arm-linux-gcc"
export LDSHARED="arm-linux-gcc -shared -Wl,-soname,libz.so.1"
export AR="arm-linux-ar rc"
export RANLIB="arm-linux-ranlib"
export CPP="arm-linux-gcc -E"

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/zlib-1.2.3"
BD_PACKAGE_NAME="zlib-1.2.3"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--shared"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="prefix=$BD_ROOT/usr"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/man"
BD_PACKAGE_BIN_CONTENT="usr/lib"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error

c, 编译jpeg用的脚本
export CC="arm-linux-gcc"
export AR="arm-linux-gcc rc"
export CPP="arm-linux-gcc -E"
export AR2="arm-linux-ranlib"

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/jpeg-6b"
BD_PACKAGE_NAME="jpeg-6b"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--build=HOST --target=arm-linux --enable-shared"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="prefix=$BD_ROOT/usr"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/include"
BD_PACKAGE_DOC_CONTENT="usr/man"
BD_PACKAGE_BIN_CONTENT="usr/bin usr/lib"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   destprefix=${BD_ROOT}/usr
   mkdir -p "${destprefix}/include"
   mkdir -p "${destprefix}/share"
   mkdir -p "${destprefix}/man/man1"
   mkdir -p "${destprefix}/bin"
   mkdir -p "${destprefix}/lib"
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error

d, 编译png用的脚本
export CFLAGS="$ARM_CFLAGS $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS $LDFLAGS"
export PATH=$TARGET_PREFIX/usr/binPATH

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/libpng-1.2.16"
BD_PACKAGE_NAME="libpng-1.2.16"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--enable-shared --host=arm-linux"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/bin usr/lib/pkgconfig usr/include usr/lib/*.la* usr/lib/*.a*"
BD_PACKAGE_DOC_CONTENT="usr/share/man"
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error
 楼主| 发表于 2007-6-17 14:43:01 | 显示全部楼层

续---------------------------

e, 编译expat用的脚本
# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/expat-2.0.0"
BD_PACKAGE_NAME="expat-2.0.0"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--host=arm-linux"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/include usr/lib/*.la*"
BD_PACKAGE_DOC_CONTENT="usr/man"
BD_PACKAGE_LOCALE_CONTENT=
BD_PACKAGE_BIN_CONTENT="usr/bin usr/lib/*.so*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


f, 编译freetype用的脚本
# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/freetype-2.3.4"
BD_PACKAGE_NAME="freetype-2.3.4"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--host=arm-linux --target=arm --disable-static --enable-shared"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/share usr/bin usr/include usr/lib/pkgconfig usr/lib/*.la*"
BD_PACKAGE_DOC_CONTENT=
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error

g, 编译fontconfig用的脚本
export CFLAGS="$ARM_CFLAGS"
export LDFLAGS="$ARM_LDFLAGS -Wl,-rpath-link=$TARGET_PREFIX/usr/lib"
export PATH=$TARGET_PREFIX/usr/binPATH

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/fontconfig-2.4.2"
BD_PACKAGE_NAME="fontconfig-2.4.2"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--host=arm-linux --with-arch=arm-linux  --sysconfdir=/etc --localstatedir=/var"
BD_MAKE_OPTIONS=""
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/lib/pkgconfig usr/include usr/lib/*.la* usr/lib/*.a*"
BD_PACKAGE_DOC_CONTENT="usr/share/man usr/share/doc"
BD_PACKAGE_LOCALE_CONTENT=
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so* usr/bin etc var"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error

h, 编译tiff用的脚本
export CFLAGS="$ARM_CFLAGS $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS $LDFLAGS"
export PATH=$TARGET_PREFIX/usr/binPATH

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/tiff-3.8.2"
BD_PACKAGE_NAME="tiff-3.8.2"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--host=arm-linux --without-x"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/lib/*.la usr/lib/*.a usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/doc usr/man"
BD_PACKAGE_LOCALE_CONTENT=
BD_PACKAGE_BIN_CONTENT="usr/bin usr/lib/*.so*"

# Set the strip variables
BD_STRIP_OPTIONS="--strip-debug"
BD_STRIP_CONTENT="usr/bin usr/lib/*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

# Get package base directory path
pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

# Strip specialy symbols
if [ ! -z "$BD_STRIP_CONTENT" ]; then
   echo "->Stip unneeded symbols..."
   arm-linux-strip $BD_STRIP_OPTIONS $BD_STRIP_CONTENT
fi

# Compress and make packages
if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error

i, 编译directfb用的脚本
export CFLAGS="$ARM_CFLAGS -I$TARGET_PREFIX/usr/include/freetype2 $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS -lz $LDFLAGS"
export PATH=$TARGET_PREFIX/usr/binPATH

# if comple the directfb support linux framebuffer support
# must modify the directfb configure file and modify the
# var "have_linux=no" to "have_linux=yes"

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/DirectFB-1.0.0"
BD_PACKAGE_NAME="directFB-1.0.0"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs"
BD_CONFIG_OPTIONS="--host=arm-linux --target=arm --disable-osx --disable-debug-support --disable-mmx \
                   --disable-sse --enable-fbdev --disable-sdl --disable-vnc --disable-sysfs --enable-zlib \
                   --disable-gif --disable-video4linux --with-gfxdrivers=none"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/include usr/lib/pkgconfig usr/lib/*.la usr/lib/*/*/*.la usr/lib/*/*/*/*.la"
BD_PACKAGE_DOC_CONTENT="usr/share/man"
BD_PACKAGE_BIN_CONTENT="usr/bin usr/lib/*.so* usr/lib/*/*/*.so* usr/lib/*/*/*/*.so* usr/share/directfb-1.0.0"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


# Unset the env here
# unset CC AR CPP LDSHARED RANLIB
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 14:48:29 | 显示全部楼层

续--------------------------------

j, 编译atk用到的脚本
export CFLAGS="$ARM_CFLAGS $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS $LDCFLAGS"
export DEP_CFLAGS="-I$TARGET_PREFIX/usr/include/glib-2.0 -I$TARGET_PREFIX/usr/lib/glib-2.0/include"
export DEP_LIBS="-L$TARGET_PREFIX/usr/lib -lglib-2.0 -lgobject-2.0"

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/gtkfb/atk-1.19.3"
BD_PACKAGE_NAME="atk-1.19.3"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs/gtkfb/"
BD_CONFIG_OPTIONS="--host=arm-linux"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/lib/pkgconfig usr/lib/*.la usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/gtk-doc"
BD_PACKAGE_LOCALE_CONTENT="usr/share/locale"
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so*"

# Set the strip variables
BD_STRIP_OPTIONS="--strip-debug"
BD_STRIP_CONTENT="usr/lib/*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

# Strip specialy symbols
if [ ! -z "$BD_STRIP_CONTENT" ]; then
   echo "->Stip unneeded symbols..."
   arm-linux-strip $BD_STRIP_OPTIONS $BD_STRIP_CONTENT
fi

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


k, 编译glib用到的脚本
# Set the build system vars here
AC_CACHE="arm-linux.cache"
BD_SRC_DIR="${ARM_HOME}/softs/sources/gtkfb/glib-2.12.9"
BD_PACKAGE_NAME="glib-2.12.9"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs/gtkfb/"
BD_CONFIG_OPTIONS="--host=arm-linux --cache-file=$AC_CACHE"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/share/aclocal usr/share/glib-2.0 usr/lib/*.la* usr/lib/pkgconfig usr/lib/glib-2.0 \
                        usr/bin usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/gtk-doc usr/share/man"
BD_PACKAGE_LOCALE_CONTENT="usr/share/locale"
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   
   #Fix some cross compile problem
   echo ac_cv_type_long_long=yes > $AC_CACHE
   echo glib_cv_stack_grows=no >> $AC_CACHE
   echo glib_cv_uscore=no >> $AC_CACHE
   echo ac_cv_func_posix_getpwuid_r=yes >> $AC_CACHE

   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


l, 编译cairo用到的脚本
export CFLAGS="$ARM_CFLAGS $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS $LDFLAGS"
export PATH=$TARGET_PREFIX/usr/binPATH
export png_CFLAGS="-I$TARGET_PREFIX/usr/include/libpng12"
export png_LIBS="-lpng12"
export directfb_CFLAGS="-D_REENTRANT -I$TARGET_PREFIX/usr/include/directfb"
export directfb_LIBS="-ldirectfb -lz -lfusion -ldirect -lpthread -ldl"

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/gtkfb/cairo-1.4.6"
BD_PACKAGE_NAME="cairo-1.4.6"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs/gtkfb"
BD_CONFIG_OPTIONS="--host=arm-linux --disable-xlib --disable-xlib-xrender --enable-directfb --without-x \
                   --enable-pdf --enable-ps --enable-svg"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/lib/*.la usr/lib/*.a* usr/lib/pkgconfig usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/gtk-doc"
BD_PACKAGE_LOCALE_CONTENT=
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so*"

# Set the strip variables
BD_STRIP_OPTIONS="--strip-debug"
BD_STRIP_CONTENT="usr/lib/*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."
   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

# Get package base directory path
pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

# Strip specialy symbols
if [ ! -z "$BD_STRIP_CONTENT" ]; then
   echo "->Stip unneeded symbols..."
   arm-linux-strip $BD_STRIP_OPTIONS $BD_STRIP_CONTENT
fi

# Compress and make packages
if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


m ,编译pango用到的脚本
export PATH=$TARGET_PREFIX/usr/binPATH
export FONTCONFIG_CFLAGS="-I$TARGET_PREFIX/usr/include/fontconfig"
export FONTCONFIG_LIBS="-lfontconfig"
export CAIRO_CFLAGS="-D_REENTRANT -I$TARGET_PREFIX/usr/include/cairo -I$TARGET_PREFIX/usr/include/directfb -I$TARGET_PREFIX/usr/include/freetype2 -I$TARGET_PREFIX/usr/include/libpng12"
export CAIRO_LIBS="-lcairo"
export GLIB_CFLAGS="-I$TARGET_PREFIX/usr/include/glib-2.0 -I$TARGET_PREFIX/usr/lib/glib-2.0/include"
export GLIB_LIBS="-lglib-2.0 -lgmodule-2.0 -lgobject-2.0"
export CFLAGS="$ARM_CFLAGS $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS -Wl,--rpath-link -Wl,$TARGET_PREFIX/usr/lib/ $LDFLAGS"

# Set the build system vars here
BD_SRC_DIR="${ARM_HOME}/softs/sources/gtkfb/pango-1.16.4"
BD_PACKAGE_NAME="pango-1.16.4"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs/gtkfb"
BD_CONFIG_OPTIONS="--host=arm-linux --without-x --sysconfdir=/etc"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/lib/*.la usr/lib/*/*/modules/*.la  usr/lib/pkgconfig usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/gtk-doc usr/man"
BD_PACKAGE_LOCALE_CONTENT=
BD_PACKAGE_BIN_CONTENT="usr/lib/*.so* usr/lib/*/*/modules/*.so* usr/bin"

# Set the strip variables
BD_STRIP_OPTIONS="--strip-debug"
BD_STRIP_CONTENT="usr/lib/*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."

   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

# Get package base directory path
pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

# Strip specialy symbols
if [ ! -z "$BD_STRIP_CONTENT" ]; then
   echo "->Stip unneeded symbols..."
   arm-linux-strip $BD_STRIP_OPTIONS $BD_STRIP_CONTENT
fi

# Compress and make packages
if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


n, 编译gtk用到的脚本
export CFLAGS="$ARM_CFLAGS $CFLAGS"
export LDFLAGS="$ARM_LDFLAGS -Wl,--rpath-link -Wl,$TARGET_PREFIX/usr/lib/ $LDFLAGS"
export PATH="`pwd`/depends_appsTARGET_PREFIX/usr/binPATH"
export PKG_CONFIG_PATH=$TARGET_PREFIX/usr/lib/pkgconfigPKG_CONFIG_PATH

# Set the build system vars here
AC_CACHE_FILE="arm-linux.cache"
BD_SRC_DIR="${ARM_HOME}/softs/sources/gtkfb/gtk+-2.10.13"
BD_PACKAGE_NAME="gtk+-2.10.13"
BD_ROOT="/tmp/${BD_PACKAGE_NAME}"
BD_PREFIX="/usr"
BD_DEST_DIR="${ARM_HOME}/arm_pkgs/gtkfb"
BD_CONFIG_OPTIONS="--host=arm-linux --with-gdktarget=directfb --without-x --disable-glibtest --cache-file=$AC_CACHE_FILE"
BD_MAKE_OPTIONS=
BD_MAKE_INSTALL_OPTIONS="DESTDIR=$BD_ROOT"
BD_MAKE_CLEAN_OPTIONS=

# Set the packages build parted
BD_PACKAGE_DEV_CONTENT="usr/share/aclocal usr/share/gtk-2.0 usr/lib/*.la usr/lib/*/*/*/*.la usr/lib/pkgconfig usr/include"
BD_PACKAGE_DOC_CONTENT="usr/share/gtk-doc usr/share/man"
BD_PACKAGE_LOCALE_CONTENT="usr/share/locale"
BD_PACKAGE_BIN_CONTENT="usr/share/themes usr/bin usr/lib/*.so* usr/lib/*/*/*/*.so*"

# Set the strip variables
BD_STRIP_OPTIONS="--strip-debug"
BD_STRIP_CONTENT="usr/bin/* usr/lib/* usr/lib/*/*/*/*"

function bd_info() {
   echo "#####################################################################"
   echo "#$1"
   echo "#####################################################################"
}

function check_error() {
   if [ ! "$?" = "0" ]; then
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      echo "! Build error at: `date`"
      echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
      exit 1
   fi
}

# Check need vars
if [ -z "${BD_SRC_DIR}" ]; then
   echo "Must set the \${BD_SRC_DIR}"
   exit 1
elif [ -z "${BD_PACKAGE_NAME}" ]; then
   echo "Must set the \${BD_PACKAGE_NAME}"
   exit 1
elif [ -z "${BD_DEST_DIR}" ]; then
   echo "Must set the \${BD_DEST_DIR}"
   exit 1
elif [ -z "${BD_ROOT}" ]; then
   echo "Must set the \${BD_ROOT}"
   exit 1
elif [ -z "${BD_PACKAGE_DEV_CONTENT}" ] && [ -z "${BD_PACKAGE_DOC_CONTENT}" ] && [ -z "${BD_PACKAGE_BIN_CONTENT}" ]; then
   echo "Must set one of the package conent of \${BD_PACKAGE_DEV_CONTENT},\${BD_PACKAGE_DOC_CONTENT}, \${BD_PACKAGE_BIN_CONTENT}"
   exit 1
fi

# Begin to configure if configure options length is not zero
cd $BD_SRC_DIR
if [ ! "${BD_CONFIG_OPTIONS}" = "NO-CONFIG" ]; then
   bd_info "Begin to configure ..."

   # Fix some problems
   echo ac_cv_path_CUPS_CONFIG=no > $AC_CACHE_FILE

   ./configure --prefix=${BD_PREFIX} ${BD_CONFIG_OPTIONS}
   check_error
fi

# Begin to make
if [ ! "${BD_MAKE_OPTIONS}" = "NO-MAKE" ]; then
   bd_info "Begin to make ..."
   make ${BD_MAKE_OPTIONS}
   check_error
fi

# Begin to make install
rm -fr "${BD_ROOT}"
mkdir -p "${BD_ROOT}"
check_error
if [ ! "${BD_MAKE_INSTALL_OPTIONS}" = "NO-INSTALL" ]; then
   bd_info "Begin to make install ..."
   make $BD_MAKE_INSTALL_OPTIONS install
   check_error
fi

# Begin to clean
if [ ! "${BD_MAKE_CLEAN_OPTIONS}" = "NO-CLEAN" ]; then
   bd_info "Begin to make clean ..."
   make $BD_MAKE_CLEAN_OPTIONS clean
   check_error
fi

# Begin to package
bd_info "Begin to make package ..."
if [ ! -d ${BD_DEST_DIR} ]; then
   mkdir -p ${BD_DEST_DIR}
   check_error
fi
cd $BD_ROOT

# Get package base directory path
pck_path_base="${BD_DEST_DIR}/${BD_PACKAGE_NAME}"
mkdir -p $pck_path_base
check_error

# Strip specialy symbols
if [ ! -z "$BD_STRIP_CONTENT" ]; then
   echo "->Stip unneeded symbols..."
   arm-linux-strip $BD_STRIP_OPTIONS $BD_STRIP_CONTENT
fi

# Compress and make packages
if [ ! -z "$BD_PACKAGE_DEV_CONTENT" ]; then
   echo "->Build the develop package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-dev_chenyq.arm.tgz ${BD_PACKAGE_DEV_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_DOC_CONTENT" ]; then
   echo "->Build the document package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-doc_chenyq.arm.tgz ${BD_PACKAGE_DOC_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_LOCALE_CONTENT" ]; then
   echo "->Build the locales package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}-nls_chenyq.arm.tgz ${BD_PACKAGE_LOCALE_CONTENT} -C / > /dev/null
   check_error
fi

if [ ! -z "$BD_PACKAGE_BIN_CONTENT" ]; then
   echo "->Build the binary package..."
   tar -czvf ${pck_path_base}/${BD_PACKAGE_NAME}_chenyq.arm.tgz ${BD_PACKAGE_BIN_CONTENT} -C / > /dev/null
   check_error
fi

rm -fr ${BD_ROOT}
check_error


好了编译部发完了, 待续---------------------
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 14:56:06 | 显示全部楼层

续-------------------------

gtk+交叉编译时需要注意的事项, 在进行gtk交叉编译的时候编译时需要用到属主系统上的某些程序用来生成代码或者资源文件,用到的属主系统的程序有:
   glib-genmarshal  该程序版本需要和当前交叉编译的glib的版本一致
   gtk-update-icon-cache 同上
这两个程序可从属主系统上的glib和gtk包中取得,如果属主系统上的版本太低,可从其他发行版的包中取得,只要你的属主上已经装有了glib和gtk+,那这两个程序无论从哪取得都可以正确运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 15:03:12 | 显示全部楼层
续------------------------------------------------------------------
   随便拷贝一个ttf或者pcf字体到$ARM_ROOT/usr/share/fonts目录下
   在开发版上运行pango-querymodules把输出保存为如:
   $ARM_ROOT/etc/pango/pango.modules的文件

   如果你的开发版上已经有了触摸屏的驱动,如果要使用directfb的linuxinput驱动层:
   检查你的开发版上的/dev下有没有input目录如果没有则自己需要建立, 该目录下的
   设备文件信息可从你的开发版上的/sys/class/input中获取

   如果都设置ok了, 哪现在你的开发版已经可以使用带触摸屏的gtk+了,呵呵!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 15:13:37 | 显示全部楼层
续,在交叉编译过程中需要修正*.la的libtool库文件和*.pc文件,下面是修正的脚本:
Fix *.la:

LIBTOOL_FILE_DIR=$TARGET_PREFIX/usr/lib/

for file in `ls $LIBTOOL_FILE_DIR/*.la`
do
   # fix libdir variable
   libdir=`sed -n "/^libdir=\.*/p" $file`
   if [ -z "$libdir" ]; then
      echo "Warning, can not find partern in file $file"
   else
      cp $file "$file"_tmp
      sed '/^libdir=\.*/c\libdir="$TARGET_PREFIX/usr/lib"' "$file"_tmp > $file
      rm -f "$file"_tmp
   fi

   # fix dependency lib
   new_depend_lib_var=" ";
   depend_lib_var=`sed -n "/^dependency_libs=\.*/p" $file`
   depend_lib=`echo $depend_lib_var | cut -d= -f2`
   depend_lib=`echo $depend_lib | sed "1,$ s/['|\"]//g"`
   for dlib in $depend_lib
   do
      if [ -z `echo $dlib | grep -o '$TARGET_PREFIX'` ] && [ -z `echo $dlib | grep "$TARGET_PREFIX"` ] \
         && [ -z `echo $dlib | grep 'crosstool'` ] && [ ! -z `echo $dlib | grep '/usr/lib'` ]; then
         dlib=`echo $dlib | sed '1,$ s/\/usr\/lib/$TARGET_PREFIX\/usr\/lib/g'`
         new_depend_lib_var="$new_depend_lib_var $dlib"
      elif [ ! -z $dlib ]; then
         new_depend_lib_var="$new_depend_lib_var $dlib"
      fi
   done
   cp $file "$file"_tmp
   dep_sed_ptrn="/^dependency_libs=\\.*/c\\dependency_libs=\"$new_depend_lib_var\""
   sed "$dep_sed_ptrn" "$file"_tmp > $file
   rm -f "$file"_tmp
done


fix *.pc:
PKG_CONFIG_FILE_DIR=$TARGET_PREFIX/usr/lib/pkgconfig

for file in `ls $PKG_CONFIG_FILE_DIR/*.pc`
do
   found=`sed -n "/^prefix=\.*/p" $file`
   if [ -z "$found" ]; then
      echo "Warning, can not find partern in file $file"
   else
      cp $file "$file"_tmp
      sed "/^prefix=\.*/c\prefix=$TARGET_PREFIX/usr" "$file"_tmp > $file
      rm -f "$file"_tmp
   fi
done
回复 支持 反对

使用道具 举报

发表于 2007-11-14 15:19:34 | 显示全部楼层
太感谢了,我在作这个,已经编译到最后一个包了,你能不能把arm-linux.cache里面的内容也写一下,谢谢了
回复 支持 反对

使用道具 举报

发表于 2007-11-24 11:50:26 | 显示全部楼层
好长的脚本……
回复 支持 反对

使用道具 举报

发表于 2007-11-24 23:59:29 | 显示全部楼层
请问有没有在此基础上编译通过最新的firefox?我现在需要把firefox移植到2410上
回复 支持 反对

使用道具 举报

发表于 2007-12-6 22:58:59 | 显示全部楼层
参考楼主的帖子,顺利完成gtk+2.12.2 + DirectFB-1.1.0 + glib-2.14.4的交叉编译,不过在arm板上运行时 DirectFB无法正确运行,显示以下错误:

DirectFB/Core/vt: Couldn't open neither `/dev/tty2' nor `/dev/vc/2
DirectFB/Core:Could not initialize 'system_core' core!

对DirectFB熟悉的朋友请指教下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表