0.2.1當前主流操作系統(tǒng)
1.操作系統(tǒng)基礎(chǔ)概念
1.1Windows與Linux的關(guān)系
當前的主流操作系統(tǒng)有:Windows、Android、iOS、Symbian、Linux/UNIX等
Windows:所見即所得。Windows用戶界面和開發(fā)環(huán)境都是面向?qū)ο?/a>的,這種操作方式模擬了現(xiàn)實世界的行為,易于理解、學習和使用。微軟在做的事情就是讓編程盡量簡單化,讓更多的人使用Windows工具編程,讓編程門檻降低,專業(yè)軟件工程的人將需要具備更加專業(yè)的知識才能在互聯(lián)網(wǎng)的世界生存。Windows是收費,但是為什么國內(nèi)還是很多人使用盜版Windows呢?原因在于微軟去打擊個人的侵權(quán)行為所花的費用要遠高于賠償費用,所以不打擊個人,但是大企業(yè)、政府如果大規(guī)模使用盜版Windows的話,侵權(quán)費都夠他喝一壺的了。
Linux:專業(yè)玩家的操作系統(tǒng)。Linux在設計的時候就是為專業(yè)計算機人員著想的,界面較Windows丑陋,操作麻煩,學習難度大,但是對于專業(yè)玩家來說,如果這些都不能克服,那還是乖乖回去使用Windows吧。相比之下,Linux的性能好,可移植性高,穩(wěn)定安全,好的設計理念,免費開源,它的盈利方式主要在于專業(yè)定制和大財主的捐贈金,比如基于Linux內(nèi)核的Android每年盈利的錢就會拿出一部分來捐贈Linux組織,作為安全維護的一筆費用。
IOS:很優(yōu)秀的操作系統(tǒng)。蘋果公司與微軟公司打了好多年的官司,原因就在于最早的圖形化界面是蘋果公司首創(chuàng)的,而微軟抄襲蘋果公司的成果。從這一點來說,蘋果公司確實是一家很強的公司,但是IOS唯獨蘋果公司有,喬布斯曾多次拯救蘋果公司,讓蘋果公司一直打造著藝術(shù)品般的電子產(chǎn)品,但是喬布斯不再了,如果哪一天蘋果公司不行了,那一起倒霉的就是一大批IOS的開發(fā)者,而Android開發(fā)風險要小,因為Android的企業(yè)千千萬,大家都綁在了一起,需求擺在那里,所以倒閉風險會小很多。
嵌入式的開發(fā):以前做嵌入式開發(fā)就是在做單片機,但是隨著半導體工業(yè)、集成電路高度化發(fā)展,物聯(lián)網(wǎng)時代正在到來,嵌入式在其中起著至關(guān)重要的作用。比如以前的嵌入式是不需要考慮聯(lián)網(wǎng)的,現(xiàn)在你看智能冰箱、智能家居等,都有遠程遙控的需求,而嵌入式就是應對這種需求的關(guān)鍵技術(shù),所以對于長期學習嵌入式開發(fā)的人來說,這是個好消息,壞消息是,對嵌入式工程師的要求提高的不少,入門門檻高了許多,但是換個角度看,它的不可取代性變得更強。
嵌入式操作系統(tǒng):Linux+Android
當前消費電子產(chǎn)品,喜用界面好看,特效渲染好的,則要用Android,能很好的和絕大多數(shù)手機相適應,而工業(yè)化的需求則是要用Linux,因為工業(yè)化是極其追求系統(tǒng)的可靠性的,個人產(chǎn)品怎么點的沒事,不會爆炸就行,而像工業(yè)化比如加熱裝置,如果系統(tǒng)故障持續(xù)加熱那后果很嚴重,目前來說Linux在這方面做得是相當出色了。抓準這兩個學習方向鉆研下去,以后必成大器。
1.2多機開發(fā):雙系統(tǒng)與虛擬機
開發(fā)嵌入式產(chǎn)品,肯定是需要Linux環(huán)境。但是因為Windows有許多很好用的工具,在Linux的沒有的,即使有,用起來也是毛病很多,如notepad++、SourceInsight,所以既需要Linux又需要Windows。
存在方式有三種:
第一種:雙系統(tǒng)(最不方便)
第二種:虛擬機(最佳選擇)
第三種:兩臺電腦(可以選擇)
現(xiàn)實中:
個人開發(fā)者(或是中小型公司):虛擬機
大公司:服務器(Linux)+ 客戶端(Windows)
1.3搭建開發(fā)環(huán)境
軟件下載:
虛擬機版本:VMware-workstation-full-10.0.2-1744117.1398244508
ubuntu版本:ubuntu-14.04.1-desktop-i386
安裝教程:安裝VMWare軟件和虛擬機ubuntu-基于14.04
嵌入式環(huán)境搭建:嵌入式開發(fā)環(huán)境搭建-基于14.04
虛擬機軟件,就是一個單純的在Windows系統(tǒng)中運行的軟件,跟word、360沒有本質(zhì)區(qū)別?,F(xiàn)在主流的虛擬機有vmware、virtualBox。虛擬機軟件在Windows中運行后,它會模擬出來一個電腦,然后我們在虛擬機上安裝別的操作系統(tǒng)。
1.4隱藏文件和非隱藏文件
Windows:右鍵屬性勾選隱藏,設置屬性實現(xiàn)。在Windows中查看隱藏文件的方法,菜單欄工具-->文件夾選項-->查看-->顯示所有文件和文件夾。
Linux:Linux中隱藏文件特點是文件名以"."開頭,跟文件屬性無關(guān)。''ls -a"可以查看該目錄隱藏文件。
1.5相對路徑與絕對路徑
什么是路徑:路徑是用來標識一個文件在操作系統(tǒng)的文件系統(tǒng)中存儲的位置的。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
絕對路徑的可移植性差,把源代碼給別人使用時,如果盤符和文件夾路徑一旦不一樣,那就沒辦法運行了,而相對路徑可移植性強,拿到源代碼就能保住路徑是正確的。若當前所處位置在很深的路徑下,要切換到附近路徑時,采用相對路徑的優(yōu)勢就很明顯了。
2.Linux基礎(chǔ)知識與技能
2.1Linux內(nèi)核、發(fā)行版
Linux本身指的是一個操作系統(tǒng)內(nèi)核,只有內(nèi)核是無法直接使用的。我們需要的是,可以使用的操作系統(tǒng)是一個包含了內(nèi)核和一批有用的應用程序的集合體。這個就叫做Linux發(fā)行版。Ubuntu、Redhat就是內(nèi)核相同但應用程序不同的Linux的發(fā)行版。
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? ? ? ? ? ? ? ? ? 以詳細信息顯示
兩者結(jié)合,四種寫法? ??????
? ? 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庫函數(shù)
(3)cd (change directory,更改目錄)
作用:用于切換目錄,涉及相對路徑和絕對路徑
? ? cd ..? ? ? ? ? ? ? ? ..代表上一層目錄
? ? cd .? ? ? ? ? ? ? ? ?.代表當前目錄
? ? cd ../../? ? ? ? ? ? 切換到上上級目錄
? ? cd ./? ? ? ? ? ? ? ? 切換到當前目錄
mkdir abcd命令可以創(chuàng)建空文件夾后,里面還創(chuàng)建了兩個文件,一個是.,一個是..,可以用ls -a查看,第一個字母為d表示directory文件,第一個為-表示文件。
(4)pwd (print work directory,打印工作目錄)
作用:打印當前的絕對路徑
(5)mkdir(make directory,創(chuàng)建文件夾)
作用:創(chuàng)建空文件夾
? ? mkdir dir1? ? ? ? ? ? ? ? 創(chuàng)建dir1文件夾
? ? mkdir -p abc/def? ? ? 級聯(lián)創(chuàng)建文件夾
(6)mv(move,移動)
作用:在目錄間移動文件,也可以重命名文件
? ? mv 源文件pathname 目標文件pathname
? ? mv def/def.txt ./def.txt? ? ? ? ? ? ? ? 移動文件
? ? mv def.txt abc.txt? ? ? ? ? ? ? ? ? ? ? ?重命名文件
(7)touch
作用:創(chuàng)建空文件
? ? 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若發(fā)現(xiàn)已存在文件,就不復制也不提示