1.2 用makefile构建交叉编译环境
这节的内容请参考http://blog.csdn.net/absurd/category/228434.aspx里面的交叉编译场景分析,我只是说一下我做的步骤:
1.下载交叉编译环境(http://www.codesourcery.com/downloads/public/gnu_toolchain/arm-none-linux-gnueabi)并安装,一般解压就可以了,然后将里面的bin目录加到环境变量的PATH里面,我的做法是在~/.bashrc最下面加一行:export PATH=$PATH:~/arm-2009q1/bin。
2.在用户的home目录(cd ~)建一个目录cross-compile
3.在cross-compile创建一个文件cross.env,内容如下:
export WORK_DIR=~/cross-compile
export ROOTFS_DIR=$WORK_DIR/rootfs
export ARCH=arm
export PKG_CONFIG_PATH=$ROOTFS_DIR/usr/local/lib/pkgconfig:$ROOTFS_DIR/usr/lib/pkgconfig:$ROOTFS_DIR/usr/X11R6/lib/pkgconfig
if [ ! -e "$ROOTFS_DIR/usr/local/include" ]; then mkdir -p $ROOTFS_DIR/usr/local/include;fi;
if [ ! -e "$ROOTFS_DIR/usr/local/lib" ]; then mkdir -p $ROOTFS_DIR/usr/local/lib; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/etc" ]; then mkdir -p $ROOTFS_DIR/usr/local/etc; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/bin" ]; then mkdir -p $ROOTFS_DIR/usr/local/bin; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/share" ]; then mkdir -p $ROOTFS_DIR/usr/local/share; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/man" ]; then mkdir -p $ROOTFS_DIR/usr/local/man; fi;
if [ ! -e "$ROOTFS_DIR/usr/include" ]; then mkdir -p $ROOTFS_DIR/usr/include; fi;
if [ ! -e "$ROOTFS_DIR/usr/lib" ]; then mkdir -p $ROOTFS_DIR/usr/lib; fi;
if [ ! -e "$ROOTFS_DIR/usr/etc" ]; then mkdir -p $ROOTFS_DIR/usr/etc; fi;
if [ ! -e "$ROOTFS_DIR/usr/bin" ]; then mkdir -p $ROOTFS_DIR/usr/bin; fi;
if [ ! -e "$ROOTFS_DIR/usr/share" ]; then mkdir -p $ROOTFS_DIR/usr/share; fi;
if [ ! -e "$ROOTFS_DIR/usr/man" ]; then mkdir -p $ROOTFS_DIR/usr/man; fi;
4.开启命令行,进入cross-compile目录下,执行. cross.env
5.将编译linux时生产的头文件,so等拷贝到cross-compile目录下rootfs/usr对应的目录(头文件一般可以拷pc的,so一定要拷arm版的)。
5.下载要编译的源代码,并放在cross-compile目录下
6.按照http://blog.csdn.net/absurd/category/228434.aspx里面的方法写makefile文件,放在cross-compile目录下
7.在命令行执行make -f libxml2.mk(libxml2.mk为上一步写的makefile)。