4412:学习笔记1

eMMC (Embedded Multi Media Card) 为MMC协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。

ubuntu中的 ./  当前目录下的意思
linux找命令一般不会先从当前目录下去找,所以加个./(.代表当前目录..代表上级目录)

 

何为‘脚本’
脚本,是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。
脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。“因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。”
脚本通常可以由应用程序临时调用并执行。各类脚本被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当点击网页上的Email地址时能自动调用Outlook Express或Foxmail这类邮箱软件,就是通过脚本功能来实现的。也正因为脚本的这些特点,往往被一些别有用心的人所利用。例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用这类脚本,便会使用户的系统受到攻击。所以用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些本身内容就非法的网页,更不要轻易允许使用脚本。通过“安全设置”对话框,选择“脚本”选项下的各种设置就可以轻松实现对脚本的禁用和启用。

 

ubuntu运行脚本
首先,确定你那个脚本文件的位置,比如说你放在/home/aaa/xxx.sh这里。然后打开终端,输入cd /home/aaa/xxx.sh 回车
然后chmod +x xxx.sh 回车,
最后输入./xxx.sh 回车
如果不行,执行sudo ./xxx.sh 回车,输入root密码回车,ok


uboot kernel linux-qt  编译的关键点
1、编译器:明确每一个的编译器是什么
2、设置环境变量:有了环境变量,在编译的时候,系统才能找到编译器
3、库文件:?(搭建搭建过程中会通过脚本语言安装库文件,简单有效)
4、源码


Dynamic Linkable Library(库文件)
先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。


 

ubuntu 的gcc
交叉编译的 arm-linux-gcc 
不是一个东西

 

 


环境变量:
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
“环境变量是在操作系统中一个具有特定名字的对象”,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path(环境变量的名字还有其他)中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
如果想要永久生效,需要把这些行添加到环境变量文件里。有两个文件可选:/etc/profile 和用户主目录下的 .bashrc。
/etc/profile对系统里所有用户都有效,用户主目录下的 .bashrc 只对该用户有效。

 

 


shell和环境变量中export

登录到系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多shell,每个shell都是由某个shell(称为父shell)派生的。
在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。
export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
#echo $PKG_PATH 在任何时候建立的变量都只是当前shell的局部变量,所以不能被shell运行的其他命令或shell程序所利用。

 

 

 


环境变量的查看和编辑方法:
 1. 显示环境变量HOME

  $ echo $HOME

  /home/redbooks

  2. 设置一个新的环境变量hello

  $ export HELLO="Hello!"

  $ echo $HELLO

  Hello!

  3. 使用env命令显示所有的环境变量

  $ env

  HOSTNAME=redbooks.safe.org

  PVM_RSH=/usr/bin/rsh

  Shell=/bin/bash

  TERM=xterm

  HISTSIZE=1000

  ...

  4. 使用set命令显示所有本地定义的Shell变量

  $ set

  BASH=/bin/bash

  BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")

  BASH_VERSION='2.05b.0(1)-release'

  COLORS=/etc/DIR_COLORS.xterm

  COLUMNS=80

  DIRSTACK=()

  DISPLAY=:0.0

  ...

  5. 使用unset命令来清除环境变量

  set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:

  $ export TEST="Test..." #增加一个环境变量TEST

  $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了

  TEST=Test...

  $ unset $TEST #删除环境变量TEST

  $ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了

  6. 使用readonly命令设置只读变量

  如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:

  $ export TEST="Test..." #增加一个环境变量TEST

  $ readonly TEST #将环境变量TEST设为只读

  $ unset TEST #会发现此变量不能被删除

  -bash: unset: TEST: cannot unset: readonly variable

  $ TEST="New" #会发现此也变量不能被修改

  -bash: TEST: readonly variable

  环境变量的设置位于/etc/profile文件

  如果需要增加新的环境变量可以添加下属行

  export path=$path:/path1:/path2:/pahtN

  -----------------------------------------------------------------------------------------------------------------------

  1.Linux的变量种类

  按变量的生存周期来划分,Linux变量可分为两类:

  1.1 永久的:需要修改配置文件,变量永久生效。

  1.2 临时的:使用export命令声明即可,变量在关闭shell时失效。

  2.设置变量的三种方法

  2.1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】

  用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

  例如:编辑/etc/profile文件,添加CLASSPATH变量

  # vi /etc/profile

  export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

  注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

  2.2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】

  用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

  例如:编辑guok用户目录(/home/guok)下的.bash_profile

  $ vi /home/guok/.bash.profile

  添加如下内容:

  export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

  注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。

  2.3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】

  在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

  3.环境变量的查看

  3.1 使用echo命令查看单个环境变量。例如:

  echo $PATH

  3.2 使用env查看所有环境变量。例如:

  env

  3.3 使用set查看所有本地定义的环境变量。

  unset可以删除指定的环境变量。

  4.常用的环境变量

  PATH 决定了shell将到哪些目录中寻找命令或程序

  HOME 当前用户主目录

  HISTSIZE 历史记录数

  LOGNAME 当前用户的登录名

  HOSTNAME 指主机的名称

  SHELL   当前用户Shell类型

  LANGUGE  语言相关的环境变量,多语言可以修改此环境变量

  MAIL   当前用户的邮件存放目录

  PS1   基本提示符,对于root用户是#,对于普通用户是$

 

 


对环境变量的理解分类,配置

前言:
1. 环境变量是操作系统环境设置的变量,适用于整个系统的用户进程;

2. 环境变量可以在命令中设置,但是用户注销的时候将会丢失这些设置值;

3. 若要重复适用,则最好在.profile中定义;环境变量的使用与本地变量的使用方法相同,

4. 但是在使用之前,必须用export命令导出。

一.Linux的变量种类
按变量的生存周期来划分,Linux变量可分为两类:

1.永久的:需要修改配置文件,变量永久生效

2.临时的:使用export命令声明即可,变量在关闭shell时失效

二.Linux 环境变量文件
linux变量文件有/etc/environment 或 /etc/profile 或 ~/.profile 或 /etc/bash.bashrc 或 ~/.bashrc, 以及~/.bash_profile(一般是用户在自己目录下新建的),~/.bash_logout.

1./etc/environment:是系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如 PATH=$PATH:/xxx/bin的代码即可

2./etc/profile:此文件是系统登录时执行的第二个文件。 为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

(/etc/profile可以用于设定针对全系统所有用户的环境变量,环境变量周期是永久性)

3. ~/.profile:

对应当前登录用户的profile文件,用于定制当前用户的个人工作环境(变量是永久性)

4. /etc/bash.bashrc:是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次

5.~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。(~/.bashrc只针对当前用户,变量的生命周期是永久的)

6.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。(如果~/目录下没有.bash_profile则新建立一个)

当一个shell关闭时,在bash_profile中定义的系统变量则会失效。因此,每打开一个新的shell时都要运行一次source bash_profile.而且针对当前用户。

7.~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。

说明:

1.以上这几个文件的执行顺序是/etc/enviroment–>/etc/profile –>~/.profile –>/etc/bash.bashrc–> ~/.bashrc

2.要使得刚修改的环境变量生效:source .bashrc

3.查看环境变量:env

4.使用readonly命令设置只读变量,如果使用了readonly命令的话,变量就不可以被修改或清除了。

5.使用unset命令来清除环境变量

$ unset TEMP_KEVIN  #删除环境变量TEMP_KEVIN


个人理解: 1、PATH中的目录增加需要用“:”连接
  2、export 和 echo  为环境变量的两个用到的命令(还有set unset)
  3、环境变量是一个特定名称的对象,有其定义的变量值,供系统全局使用
  4、变量分为暂时和永久的(对应的shell不同,存放在的文件不同)
  5、环境变量立即生效需要source 命令

 

 

 

 

理解Qt
而qt则是用来开发界面程序的,类似windows下微软的mfc,至于qt只是个基于C++的界面程序开发工具,觉得以后用到就学一下,用不到就算了。

 


理解gcc
linux下编译c程序必然要用到gcc编译器,你要在linux下写程序,必然的要会使用gcc对你的程序进行编译,gcc只是一个编译器。你的意思是linux下的c/c++集成开发环境吧,anjuta,eclipse等等都可以,但他们只是提供了开发环境,编译器还是用的gcc。

 

 

 

 

 

 

linux-c
TOP-4412开发板可以运行的文件系统很多,在具体的文件系统上实现特定功能前,可以
使用Linux-C程序来测试硬件以及驱动。而且这些程序很容易移植到Android、Qt/E以及最小
文件系统上。
本质上,我们可以这样理解,Android 只是一个大的文
件而已,以下面第一个 helloworld 为例,Linux 内核上运行着两个程序“helloworld”+
“Android”。

 

 

文件系统
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。


文件的系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。因此,可以说"我有2个文件系统"意思是他有2个分区,一个存文件,或他用 "扩展文件系统",意思是文件系统的种类。

磁盘或分区和它所包括的文件系统的不同是很重要的。少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操作;这可能破坏一个存在的文件系统。大部分程序基于文件系统进行操作,在不同种文件系统上不能工作。

一个分区或磁盘在作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就叫建立文件系统。

 

 

 

 

 

linux中可执行文件
.c只是简单的文本文件
.o是编译之后的二进制文件
最终生成的可执行文件,是编辑--编译--链接之后的文件.

posted @ 2015-12-01 12:37  Eldric  阅读(205)  评论(0编辑  收藏  举报