海思交叉编译工具链安装脚本

该脚本在海思arm-hisiv500-linux.sh文件中,内容如下,可以作为以后自己的shell脚本的参考

#!/bin/bash

TOP_DIR=/opt/hisi-linux/x86-arm
#TOP_DIR=/home/share/toolchains/install
TOOL_DIR=$TOP_DIR/arm-hisiv500-linux
TAR_BIN_DIR=$TOOL_DIR/target/bin
BIN_FILES=$TOOL_DIR/bin/arm-hisiv500-linux-uclibcgnueabi-*
LN_FILE_NAME=arm-hisiv500-linux-
TOOLS_PKG="`dirname $0`/arm-hisiv500-linux.tar.bz2"

#set -e : 执行的时候如果出现了返回值为非零,整个脚本就会立即退出 
#set +e:  执行的时候如果出现了返回值为非零,将会继续执行下面的脚本 
set +e

if [ -z "$1" ] #-z 空字符串(长度0)
then
	echo "CROSS_COMPILER_PATH=$TAR_BIN_DIR"
	if [ -f $TOOL_DIR/version ]
	then
		if [ -n "`grep 110310 $TOOL_DIR/version`" ]  # -n 非空字符串(长度非0)
		then
			echo "Cross Tools has been installed yet!" >&2
			exit 0
		fi
	else
		echo "Do not have version file" >&2
	fi

	eval $0 force
	[ $? == 0 ] && exit 0

	echo "sorry, you must have super privilege!" >&2
	select choose in 'I have root passwd' 'I have sudo privilege' 'Try again' 'Ignore' 'Aboart' 
	do
		case $choose in
		*root*)
			su -c "$0 force"
			[ $? == 0 ] && break
			;;
		*sudo*)
			sudo $0 force
			[ $? == 0 ] && break
			;;
		Try*)
			eval $0 force
			[ $? == 0 ] && break
			;;
		Ignore)
			exit 0
			;;
		Aboart)
			exit 1
			;;
		*)
			echo "Invalid select, please try again!" >&2
			continue
			;;
		esac

		echo "Install cross tools failed!" >&2
	done

	exit 0
fi

mkdir -pv $TOP_DIR
[ $? != 0 ] && exit 1

if [ -d $TOOL_DIR ]
then
	echo "Delete exist directory..." >&2
	rm $TOOL_DIR -rf 
else
	mkdir -pv $TOOL_DIR
fi

echo "Extract cross tools ..." >&2
tar -xjf $TOOLS_PKG -C $TOP_DIR
[ $? != 0 ] && exit 1


# creat link
rm $TAR_BIN_DIR -rf
mkdir -p $TAR_BIN_DIR
for armlinux in $BIN_FILES
do
       ln $armlinux $TAR_BIN_DIR/$LN_FILE_NAME`basename $armlinux | cut -b 34-` -sv
done

sed -i  '/\/arm-hisiv500-linux\//d' /etc/profile
[ $? != 0 ] && exit 1

if [ -z "`grep "$TAR_BIN_DIR" < /etc/profile`" ] ;
then
	echo "export path $TAR_BIN_DIR" >&2
	cat >> /etc/profile << EOF

# `date`
# Hisilicon Linux, Cross-Toolchain PATH
export PATH="$TAR_BIN_DIR:\$PATH" 
# 

EOF
	[ $? != 0 ] && exit 1
else
	echo "skip export toolchains path" >&2
fi

tar xzf ./runtime_uclibc.tgz -C /opt/hisi-linux/x86-arm/arm-hisiv500-linux/

exit 0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本资源为arm-linux下的海思编译工具V300 C语言有三种标准库如下: 1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。 目前,常见的桌面和服务中的GNU/Linux类的系统中,都是用的这套C语言标准库。 其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。 2.uClibc 一个小型的C语言标准库,主要用于嵌入式。 其最开始设计用于uClinux(注:uClinux不支持MMU),因此比较适用于微处理中。 对应的,此处的u意思是μ,Micro,微小的意思。 uClibc的特点: (1)uClibc比glibc要小很多。 (2)uClibc是独立的,为了应用于嵌入式系统中,完全重新实现出来的。和glibc在源码结构和二进制上,都不兼容。 3.EGLIBC EGLIBC = Embedded GLIBC EGLIBC是,(后来)glibc的原创作组织FSF所(新)推出的,glibc的一种变体,目的在于将glibc用于嵌入式系统。 EGLIBC的目标是: (1)保持源码和二进制级别的兼容于Glibc 源代码架构和ABI层面兼容 如果真正实现了这个目标,那意味着,你之前用glibc编译的程序,可以直接用eglibc替换,而不需要重新编译。 这样就可以复用之前的很多的程序了。 (2)降低(内存)资源占用/消耗 (3)使更多的模块为可配置的(以实现按需裁剪不需要的模块) (4)提高对于交叉编译(cross-compilation)和交叉测试(cross-testing)的支持 【目前了解到的海思交叉编译工具的应用环境】 arm-hisiv100-linux为基于uclibc的工具,arm-hisiv200-linux 为基于 glibc 的工具; arm-hisiv300-linux为基于uclibc的工具,arm-hisiv400-linux 为基于 glibc 的工具; arm-hisiv500-linux为基于uclibc的工具,arm-hisiv600-linux 为基于 glibc 的工具。 (在开发的时候,你编译内核所用的交叉编译跟用户的应用程序所用的交叉编译一定需要相同,不然没法调用系统内核的依赖库)   其中eglibc这种很容易被人开发者忽视,从而选错了编译工具。 uClibc和Glibc并不相同,两者有许多不同之处,有可能给你带来一些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值