freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析
接下来使用自己的课外歇息时间,对基于PowerPC架构freescale-sdk,进行linux移植和分析。主要參考官方文档freescale linux sdk START_HERE.html,首先对搭建编译环境脚本host-prepare.sh分析。在移植系统之前。须要搭建编译环境。安装必要的包。为后期编译系统做准备。
非常多人看到脚本就头疼,以下是我的分析过程,分析不好的地方能够在以下留言。一起讨论。
一.搭建编译环境脚本分析./scripts/host-prepare.sh
freescale@freescale-sdk:~/SDK/QorIQ-SDK-V1.4-20130625-yocto$ ./scripts/host-prepare.sh -h
Usage: ./scripts/host-prepare.sh [-h] [-f]
-h: display help
-f: force install all needed host pkgs, running non-interactively
分析./scripts/host-prepare.sh脚本,输入命令./scripts/host-prepare.sh -h,显示帮助信息。
SCRIPT_DIR=`readlink -f $(dirname $0)`#获取当前脚本所在文件夹
usage_message() { #帮助子函数。输入-h或-?时调用该函数执行
echo "Usage: $0 [-h] [-f]
-h: display help
-f: force install all needed host pkgs, running non-interactively
"
} #getopts options variable
while getopts "fh" host_prepare_flag #每次运行循环。getopts 就检查下一个命令行參数,并推断它是否合法。
即检查參数是否以 - 开头,后面跟一个包括在option中的字母
do #假设是,就把匹配的选项字母存在指定的变量 variable 中,并返回退出状态0;
case $host_prepare_flag in #假设 - 后面的字母没有包括在 options 中,就在 variable 中存入一个 ?。并返回退出状态0;
f) force_update='true'; #假设命令行中已经没有參数,或者下一个參数不以 - 开头。就返回不为0的退出状态。
;;
?) usage_message;exit 1;
;;
esac
done
# check host distribution #检查客服机系统类型,存在/etc/lsb-release文件,打开显示DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04
if [ -r /etc/lsb-release ] && grep Ubuntu /etc/lsb-release >/dev/null 2>&1
#1表示stdout标准输出,系统默认值是1。>/dev/null相当于1>/dev/null
then #2表示stderr标准错误
# Ubuntu-based system
. /etc/lsb-release
distro="Ubuntu"
release=${DISTRIB_RELEASE}
hostpkg="apt-get"
elif [ -r /etc/debian_version ]
then
# Debian-based
distro="Debian"
release=`cat /etc/debian_version`
hostpkg="apt-get"
......
echo "Verifying sudo permission to execute $hostpkg command."
#输出Verifying sudo permission to execute apt-get command.
user=`whoami` || true #这里包含以下几句都是关于root权限推断的。以后分析??
?
......
case "$distro" in #依据上面系统推断得出$distro="Ubuntu",故运行脚本script="$SCRIPT_DIR/host-prepare-ubuntu-mint-debian.sh";
'Ubuntu' | 'Mint' | 'Debian' )
script="$SCRIPT_DIR/host-prepare-ubuntu-mint-debian.sh";
;;
'Redhat' | 'CentOS' | 'Fedora')
script="$SCRIPT_DIR/host-prepare-rhel-centos-fedora.sh";
;;
'SUSE' | 'openSUSE')
script="$SCRIPT_DIR/host-prepare-suse.sh";
;;
esac
#紧接着上面分析$SCRIPT_DIR/host-prepare-ubuntu-mint-debian.sh,当中$SCRIPT_DIR=~/SDK/QorIQ-SDK-V1.4-20130625-yocto/scripts
if test $force_update; then UPDATE_FLAG='-y --force-yes';fi
#force_update='true'赋值 UPDATE_FLAG='-y --force-yes'
PKGS="sed wget subversion git-core coreutils \
unzip texi2html texinfo libsdl1.2-dev docbook-utils fop gawk \
python-pysqlite2 diffstat make gcc build-essential xsltproc \
g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev \
autoconf automake groff libtool xterm libxml-parser-perl \
"
# pkgs required for fsl use
PKGS="$PKGS vim-common xz-utils cvs tofrodos libstring-crc32-perl"
PKGS="$PKGS patch libbonobo2-common libncurses5-dev"
if [ "`uname -m`" = "x86_64" ]; then
PKGS="$PKGS ia32-libs lib32ncurses5-dev"
fi #对PKGS赋值须要安装的包
echo "Now we're going to install all the other development packages needed to build Yocto, please wait"
sudo apt-get $UPDATE_FLAG install $PKGS #搭建编译环境,安装必要的包
至此。已安装好必要的包,为后期系统正常编译搭建好环境。
freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析的更多相关文章
- Linux系统移植(1) ------搭建交叉编译环境
本人的开发环境是ubuntu12.05的64版本,运行在11.00的虚拟机上.首先说明为什么需要搭建交叉编译环境.我们知道,我们的开发一般在PC机上,是基于X86架构的,而我们的开发板却是基于ARM架 ...
- Linux程序设计(搭建开发环境--curses)
看官们.咱们今天要说的内容.是前面内容的一点小补充,详细的内容是:安装curses开发包.以搭建 开发环境.闲话休说,言归正转. 我们在前面说过搭建开发环境的内容,主要说了开发环境中的GCC和VIM, ...
- [Linux] deepin15.8搭建LNMP环境
LAMP和LNMP LAMP==Linux+Apache+Mysql+PHP LNMP==Linux+Nginx+Mysql+PHP 安装nginx sudo apt install nginx 安装 ...
- Linux笔记 #07# 搭建机器学习环境
环境: Debian 8.8 64位, 同样适用 win10 基本步骤: 安装 Python 安装必要的库 测试 一.安装 Python 延续之前的 搭建 Python 环境 选取折中版本 Pytho ...
- Linux 笔记 #01# 搭建 Python 环境 & vim 代码高亮
日常收集 vim editor: How do I enable and disable vim syntax highlighting? 搭建 Python 环境 vim editor: How d ...
- 3.了解linux系统以及搭建学习环境
目录: 1.linux的前世今生. 2.企业如何选择linux系统? 3.如何在虚拟机上安装linux系统?搭建学习环境. 1.linux的前世今生. 1).起源:先是贝尔实验室的Unix系统,因为各 ...
- Linux 18.04 搭建lamp环境
Linux 18.04 下搭建lamp环境 一. 安装服务器 a) 在配置好sources.list文件后,apt-get updata&upgrade更新软件: 二. ...
- linux系统下搭建php环境之-Discuz论坛
1.安装搭建论坛必要的软件 apache php mysql CentOS系统我们可以直接使用 yum install 的方式进行软件安装,腾讯云有提供软件安装源,是同步CentOS官方的安装源,包涵 ...
- Linux下配置Objective-C编译环境
Ubuntu环境下Objective-C编译环境配置参考这里. CentOS环境下Objective-C编译环境配置参考这里. 还在继续探索中.
随机推荐
- ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)
1057: Beautiful Garden Time Limit: 5 Sec Memory Limit: 128 MB Submit: 25 Solved: 12 [Submit][Statu ...
- 刷题总结——date(ssoj)
题目: 题目背景 SOURCE:NOIP2015-SHY-9 题目描述 小Y和小Z好不容易有机会相见啦,可是邪恶的小H却不想让他们相见.现在有一些城市,城市之间有双向路径相连,有路径相连的城市之间可以 ...
- 刷题总结——松鼠的新家(bzoj3631)
题目: Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在“树”上. ...
- hdu 6119 小小粉丝度度熊
小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 应用express mockjs模拟前端json数据接口
一.首先需要在项目安装express 1.cnpm install express --save-dev 2.cnpm install mockjs --save-dev 二.在项目根目录下新建pr ...
- C语言中的数组的访问方式
闲下来,写的代码,很是简单,不解释,代码如下: #include <stdio.h> int main(int argc, char **argv) { char cArray[] = & ...
- SQL注入原理及防范
1.1.2 正文 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 具体来说,它是利用现有应用程序,将(恶 ...
- LNMP 之 Nginx负载均衡服务器
Nginx负载均衡服务器 参考教程:[千峰教育] 准备工作: 三台服务器,每台服务器都需要安装nginx. 1.关闭防火墙 service iptables stop2.关闭Selinux seten ...
- CSS-滤镜 -webkit-filter
css滤镜属性,可以在元素呈现之前,为元素的渲染提供一些效果,如模糊.颜色转移之类的.滤镜常用于调整图像.背景.边框的渲染. 语法: webkit-filter: none | blur(px) | ...
- es6 Number.isFinite()、Number.isNaN()、Number.isInteger()、Math.trunc()、Math.sign()、Math.cbrt()、Math.fround()、Math.hypot()、Math 对数方法
ES6在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法,用来检查Infinite和NaN这两个特殊值. Number.isFinite()用来检查 ...