获取当前目录
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。