automake 交叉编译模板和常用配置说明

获取当前目录

export ESW_GST_ROOT_PATH=$(cd `dirname $0`;pwd)
#export ESW_GST_ROOT_PATH=$(dirname $(readlink -f $0))
work_path=$(dirname $0)
cd ./${work_path}  # 当前位置跳到脚本位置
export ESW_GST_ROOT_PATH=$(pwd)   # 取到脚本目录 

#debug:
echo PWD: $PWD
echo pwd: $(pwd) 
echo $_0: $0
export cur_dir_test=$(cd `dirname $0`;pwd)
echo cur_dir_test: $cur_dir_test

if [ ! -f $ESW_GST_ROOT_PATH/build.sh ]; then
    echo $ESW_GST_ROOT_PATH/build.sh not exit.
fi
# Get CPU count as jobs to speed up compiling.
CPU_COUNT=`grep "^processor" /proc/cpuinfo | wc -l`
[ -z "$CPU_COUNT" ] && CPU_COUNT=8

使用source,必须用pwd,在当前目录获取。直接shell时可以使用$(cd dirname $0;pwd)的形式。

交叉编译常用的配置:

export CROSS_COMPILE=$AERO_TOOL_DIR 
export CC=${CROSS_COMPILE}gcc 
export CXX=${CROSS_COMPILE}g++ 
export LD=${CROSS_COMPILE}ld 
export PREFIX=/usr/local/ 
export LD_LIBRARY_PATH=$PREFIX/lib 
export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig 
export SYSROOT=$OUT_HOSTDIR/arm-buildroot-linux-gnueabi/sysroot
  • CROSS_COMPILE 指定工具链路径
  • PREFIX 指定安装路径
  • SYSROOT 指定编译时gcc链接的头文件和库搜索路径
  • HOST 指定编译主机类型
  • TARGET 指定目标平台类型

更多可以参看:configure配置介绍

示例脚本:

BASE_PATH=$(cd `dirname $0`;pwd)
OUT=$BASE_PATH/out
mkdir -p $OUT

ROOT_DIR=$BASE_PATH/../../..
AERO_TOOL_DIR=$ROOT_DIR/out/sun8iw17p1/linux/common/buildroot/host/opt/ext-toolchain/bin
OUT_HOSTDIR=$ROOT_DIR/out/sun8iw17p1/linux/common/buildroot/host/usr/

CC=$TOOL_DIR/arm-linux-gnueabi-gcc
CPP=$TOOL_DIR/arm-linux-gnueabi-g++
MAKE="make -j48"
HOST=arm-linux-gnueabi
TARGET=arm-linux
PREFIX=$OUT
SYSROOT=$OUT_HOSTDIR/arm-buildroot-linux-gnueabi/sysroot

#            ./autogen.sh
            ./configure \
                CC=${CC} \
                CXX=${CPP} \
                --host=${HOST} \
                --prefix=$PREFIX \
                --target=$TARGET \
                CFLAGS="--sysroot=${SYSROOT}"
            $MAKE && $MAKE install

一般我们可以直接编写一个脚本,通过source在当前环境中导出上述变量,然后直接./configure,make&&make install。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值