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)。