接下来使用自己的课外歇息时间,对基于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分析的更多相关文章

  1. Linux系统移植(1) ------搭建交叉编译环境

    本人的开发环境是ubuntu12.05的64版本,运行在11.00的虚拟机上.首先说明为什么需要搭建交叉编译环境.我们知道,我们的开发一般在PC机上,是基于X86架构的,而我们的开发板却是基于ARM架 ...

  2. Linux程序设计(搭建开发环境--curses)

    看官们.咱们今天要说的内容.是前面内容的一点小补充,详细的内容是:安装curses开发包.以搭建 开发环境.闲话休说,言归正转. 我们在前面说过搭建开发环境的内容,主要说了开发环境中的GCC和VIM, ...

  3. [Linux] deepin15.8搭建LNMP环境

    LAMP和LNMP LAMP==Linux+Apache+Mysql+PHP LNMP==Linux+Nginx+Mysql+PHP 安装nginx sudo apt install nginx 安装 ...

  4. Linux笔记 #07# 搭建机器学习环境

    环境: Debian 8.8 64位, 同样适用 win10 基本步骤: 安装 Python 安装必要的库 测试 一.安装 Python 延续之前的 搭建 Python 环境 选取折中版本 Pytho ...

  5. Linux 笔记 #01# 搭建 Python 环境 & vim 代码高亮

    日常收集 vim editor: How do I enable and disable vim syntax highlighting? 搭建 Python 环境 vim editor: How d ...

  6. 3.了解linux系统以及搭建学习环境

    目录: 1.linux的前世今生. 2.企业如何选择linux系统? 3.如何在虚拟机上安装linux系统?搭建学习环境. 1.linux的前世今生. 1).起源:先是贝尔实验室的Unix系统,因为各 ...

  7. Linux 18.04 搭建lamp环境

    Linux 18.04 下搭建lamp环境 一.      安装服务器 a)     在配置好sources.list文件后,apt-get updata&upgrade更新软件: 二.    ...

  8. linux系统下搭建php环境之-Discuz论坛

    1.安装搭建论坛必要的软件 apache php mysql CentOS系统我们可以直接使用 yum install 的方式进行软件安装,腾讯云有提供软件安装源,是同步CentOS官方的安装源,包涵 ...

  9. Linux下配置Objective-C编译环境

    Ubuntu环境下Objective-C编译环境配置参考这里. CentOS环境下Objective-C编译环境配置参考这里. 还在继续探索中.

随机推荐

  1. 【bzoj3526】[Poi2014]Card 线段树区间合并

    题目描述 有n张卡片在桌上一字排开,每张卡片上有两个数,第i张卡片上,正面的数为a[i],反面的数为b[i].现在,有m个熊孩子来破坏你的卡片了!第i个熊孩子会交换c[i]和d[i]两个位置上的卡片. ...

  2. JSON树节点的增删查改

    最近了解到使用json字符串存到数据库的一种存储方式,取出来的json字符串可以进行相应的节点操作 故借此机会练习下递归,完成对json节点操作对应的工具类. 介绍一下我使用的依赖 复制代码 < ...

  3. bzoj3207花神的嘲讽计划Ⅰ

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=3207 给定一个原字符串和m个询问,每次查询原字符串[l,r]内是否包含给定字符串s (len( ...

  4. 集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils探究(转)

    之前一直以为集合工具类只有CollectionUtils,主要用它的isEmpty(final Collection<?> coll)静态方法来判断一个给定的集合是否为null或者是否长度 ...

  5. css3 boxing-sizing属性

    boxing-sizing: 1.content-box 计算宽度不包含padding和border宽度 2.border-box border和padding计算入width之内 3.padding ...

  6. 25深入理解C指针之---传递数组

    一.传递数组:将数组作为参数传入函数,或将数组作为数据当成是函数的返回值 1.定义:可以传入和传出数组 2.特征: 1).将数组作为参数传递给函数的本质是传递数组的地址,这种传递无需复制数组元素,所以 ...

  7. LeetCode OJ-- Spiral Matrix II

    https://oj.leetcode.com/problems/spiral-matrix-ii/ 螺旋矩阵,和题目一一样的思路,这个是产生n*n 矩阵. #include <iostream ...

  8. 微信小程序之微信支付C#后台(统一下单)

    一.微信小程序支付 1.微信小程序端请求支付接口 商户在小程序中先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付.具体可以查看接口示例. 接口传入参数示例: <xm ...

  9. 理解webpack中的devTool的配置项

    2.1. eval  eval 会将每一个module模块,执行eval,执行后不会生成sourcemap文件,仅仅是在每一个模块后,增加sourceURL来关联模块处理前后对应的关系.在webpac ...

  10. Intellij IDEA创建项目

    问题:无Java文件 解决方案: 打开file下面的project structure,在main目录下新建java文件,并将java文件设置为 Sources属性 问题:无resouces 解决方案 ...