0.2.1当前主流操作系统
1.操作系统基础概念
1.1Windows与Linux的关系
当前的主流操作系统有:Windows、Android、iOS、Symbian、Linux/UNIX等
Windows:所见即所得。Windows用户界面和开发环境都是面向对象的,这种操作方式模拟了现实世界的行为,易于理解、学习和使用。微软在做的事情就是让编程尽量简单化,让更多的人使用Windows工具编程,让编程门槛降低,专业软件工程的人将需要具备更加专业的知识才能在互联网的世界生存。Windows是收费,但是为什么国内还是很多人使用盗版Windows呢?原因在于微软去打击个人的侵权行为所花的费用要远高于赔偿费用,所以不打击个人,但是大企业、政府如果大规模使用盗版Windows的话,侵权费都够他喝一壶的了。
Linux:专业玩家的操作系统。Linux在设计的时候就是为专业计算机人员着想的,界面较Windows丑陋,操作麻烦,学习难度大,但是对于专业玩家来说,如果这些都不能克服,那还是乖乖回去使用Windows吧。相比之下,Linux的性能好,可移植性高,稳定安全,好的设计理念,免费开源,它的盈利方式主要在于专业定制和大财主的捐赠金,比如基于Linux内核的Android每年盈利的钱就会拿出一部分来捐赠Linux组织,作为安全维护的一笔费用。
IOS:很优秀的操作系统。苹果公司与微软公司打了好多年的官司,原因就在于最早的图形化界面是苹果公司首创的,而微软抄袭苹果公司的成果。从这一点来说,苹果公司确实是一家很强的公司,但是IOS唯独苹果公司有,乔布斯曾多次拯救苹果公司,让苹果公司一直打造着艺术品般的电子产品,但是乔布斯不再了,如果哪一天苹果公司不行了,那一起倒霉的就是一大批IOS的开发者,而Android开发风险要小,因为Android的企业千千万,大家都绑在了一起,需求摆在那里,所以倒闭风险会小很多。
嵌入式的开发:以前做嵌入式开发就是在做单片机,但是随着半导体工业、集成电路高度化发展,物联网时代正在到来,嵌入式在其中起着至关重要的作用。比如以前的嵌入式是不需要考虑联网的,现在你看智能冰箱、智能家居等,都有远程遥控的需求,而嵌入式就是应对这种需求的关键技术,所以对于长期学习嵌入式开发的人来说,这是个好消息,坏消息是,对嵌入式工程师的要求提高的不少,入门门槛高了许多,但是换个角度看,它的不可取代性变得更强。
嵌入式操作系统:Linux+Android
当前消费电子产品,喜用界面好看,特效渲染好的,则要用Android,能很好的和绝大多数手机相适应,而工业化的需求则是要用Linux,因为工业化是极其追求系统的可靠性的,个人产品怎么点的没事,不会爆炸就行,而像工业化比如加热装置,如果系统故障持续加热那后果很严重,目前来说Linux在这方面做得是相当出色了。抓准这两个学习方向钻研下去,以后必成大器。
1.2多机开发:双系统与虚拟机
开发嵌入式产品,肯定是需要Linux环境。但是因为Windows有许多很好用的工具,在Linux的没有的,即使有,用起来也是毛病很多,如notepad++、SourceInsight,所以既需要Linux又需要Windows。
存在方式有三种:
第一种:双系统(最不方便)
第二种:虚拟机(最佳选择)
第三种:两台电脑(可以选择)
现实中:
个人开发者(或是中小型公司):虚拟机
大公司:服务器(Linux)+ 客户端(Windows)
1.3搭建开发环境
软件下载:
虚拟机版本:VMware-workstation-full-10.0.2-1744117.1398244508
ubuntu版本:ubuntu-14.04.1-desktop-i386
安装教程:安装VMWare软件和虚拟机ubuntu-基于14.04
嵌入式环境搭建:嵌入式开发环境搭建-基于14.04
虚拟机软件,就是一个单纯的在Windows系统中运行的软件,跟word、360没有本质区别。现在主流的虚拟机有vmware、virtualBox。虚拟机软件在Windows中运行后,它会模拟出来一个电脑,然后我们在虚拟机上安装别的操作系统。
1.4隐藏文件和非隐藏文件
Windows:右键属性勾选隐藏,设置属性实现。在Windows中查看隐藏文件的方法,菜单栏工具-->文件夹选项-->查看-->显示所有文件和文件夹。
Linux:Linux中隐藏文件特点是文件名以"."开头,跟文件属性无关。''ls -a"可以查看该目录隐藏文件。
1.5相对路径与绝对路径
什么是路径:路径是用来标识一个文件在操作系统的文件系统中存储的位置的。pathname
举例:
D:\winshare\enum.c 全路径 pathname
D:\winshare\ 路径 path
enum.c 文件名 name
绝对路径:路径是从绝对位置开始的,这个绝对位置的意思好比,你填一个快递地址,先填广东省再填市,这个广东省就算绝对地址的开始,简单的讲,绝对地址就是大家都默认熟知的。比如Windows中从某一个盘符开始(C:\),Linux中从根目录(/)开始。这里路径分隔符这样来记,/代表撇,\代表捺,Linux谐音“力”,就代表撇,而另一个捺就自然是Windows。
测试:
/abc/123/def.txt 是Linux的绝对路径
abc/123/def.txt 是Linux的相对路径
F:\abc\123\def.txt 是Windows的绝对路径
abc\123\def.txt 是Windows的相对路径
相对路径:指明路径的时候,是从当前所在位置开始的。
举例:
D:\我的文档\123\123.txt
D:\我的文档\abc\abc.txt
当前我在123.txt,但是要去abc.txt
方式1:采用绝对路径,D:\我的文档\abc\abc.txt
方式2:采用相对路径,..\abc\abc.txt
绝对路径的可移植性差,把源代码给别人使用时,如果盘符和文件夹路径一旦不一样,那就没办法运行了,而相对路径可移植性强,拿到源代码就能保住路径是正确的。若当前所处位置在很深的路径下,要切换到附近路径时,采用相对路径的优势就很明显了。
2.Linux基础知识与技能
2.1Linux内核、发行版
Linux本身指的是一个操作系统内核,只有内核是无法直接使用的。我们需要的是,可以使用的操作系统是一个包含了内核和一批有用的应用程序的集合体。这个就叫做Linux发行版。Ubuntu、Redhat就是内核相同但应用程序不同的Linux的发行版。
2.2GUI(图形用户界面)和cmdline(命令行)
GUI:Graphical User Interface
cmdline:command line
人机交互:人和机器(计算机)进行交互
Windows与Linux,既有GUI,又有命令行,但是Windows常用GUI,Linux常用cmdline
2.3Linux常用命令
(1)ls (list,列表)
作用:使用列表把当前文件夹下所有文件显示出来
ls -a 显示所有文件,包括隐藏文件
ls -l 以详细信息显示
两者结合,四种写法
ls -a -l ls -l -a ls -al ls -la
(2)man
作用:查询man手册,获得帮助信息
man 1 ls 1表示查询的是Linux命令
man 2 ls 2表示查询的是Linux的api
man 3 ls 3表示查询的是C库函数
(3)cd (change directory,更改目录)
作用:用于切换目录,涉及相对路径和绝对路径
cd .. ..代表上一层目录
cd . .代表当前目录
cd ../../ 切换到上上级目录
cd ./ 切换到当前目录
mkdir abcd命令可以创建空文件夹后,里面还创建了两个文件,一个是.,一个是..,可以用ls -a查看,第一个字母为d表示directory文件,第一个为-表示文件。
(4)pwd (print work directory,打印工作目录)
作用:打印当前的绝对路径
(5)mkdir(make directory,创建文件夹)
作用:创建空文件夹
mkdir dir1 创建dir1文件夹
mkdir -p abc/def 级联创建文件夹
(6)mv(move,移动)
作用:在目录间移动文件,也可以重命名文件
mv 源文件pathname 目标文件pathname
mv def/def.txt ./def.txt 移动文件
mv def.txt abc.txt 重命名文件
(7)touch
作用:创建空文件
touch pathname
touch 1.txt
(8)cp(copy,复制)
作用:复制文件或文件夹
cp 源文件pathname 目标文件pathname
cp 1.txt a.c
cp 1.txt ../b.c
cp -r 用来复制文件夹
cp -f 强制复制
实际操作时:
一般都是cp -f 复制文件,cp -rf 复制文件夹
不加-f,Linux若发现已存在文件,就不复制也不提示