
vi是Linux系統(tǒng)的第一個全屏幕交互式編輯程序,它從誕生至今一直得到廣大用戶的青睞,歷經(jīng)數(shù)十年仍然是人們主要使用的文本編輯工具,足以見其生命力之強,而強大的生命力是其強大的功能帶來的。由于大多數(shù)讀者在此之前都已經(jīng)用慣了Windows平臺上的編輯器,因此,在剛剛接觸時總會或多或少不適應(yīng),但只要習(xí)慣之后,就能感受到它的方便與快捷。
有了一個初步的了解后,讀者是否想親自試一下?其實安裝Linux是一件很容易的事情,不過在開始安裝之前,還需要了解一下在Linux安裝過程中可能遇到的一些基本知識以及它與Windows的區(qū)別。
Linux中的文件類型與Windows有顯著的區(qū)別,其中最顯著的區(qū)別在于Linux對目錄和設(shè)備都當(dāng)作文件來進行處理,這樣就簡化了對各種不同類型設(shè)備的處理,提高了效率。Linux中主要的文件類型分為4種:普通文件、目錄文件、鏈接文件和設(shè)備文件。
當(dāng)用戶在命令行下工作時,不是直接同操作系統(tǒng)內(nèi)核交互信息的,而是由命令解釋器接受命令,分析后再傳給相關(guān)的程序。shell是一種Linux中的命令行解釋程序,就如同command.com是DOS下的命令解釋程序一樣,為用戶提供使用操作系統(tǒng)的接口。它們之間的關(guān)系如圖2.1所示。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux內(nèi)核。
在了解了Linux的常見命令之后,下面詳細講解Linux的啟動過程。Linux的啟動過程包含了Linux工作原理的精髓,而且在嵌入式開發(fā)過程中非常需要這方面的知識。
init進程的作用是啟動Linux系統(tǒng)服務(wù)(也就是運行在后臺的守護進程)。Linux的系統(tǒng)服務(wù)包括兩種,第一種是獨立運行的系統(tǒng)服務(wù),它們常駐內(nèi)存中,自開機后一直運行著(如httpd),具有很快的響應(yīng)速度;第二種是由xinet設(shè)定的服務(wù)。
在Linux下安裝一個完整的軟件(嵌入式Linux的必備工具——交叉編譯工具),掌握Linux常見命令,學(xué)會設(shè)置環(huán)境變量,同時搭建起嵌入式Linux的交叉編譯環(huán)境(關(guān)于交叉編譯的具體概念在本書后面會詳細講解),為今后的實驗打下良好的基礎(chǔ)。
C語言最早是由貝爾實驗室的Dennis Ritchie為了UNIX的輔助開發(fā)而編寫的,它是在B語言的基礎(chǔ)上開發(fā)出來的。盡管C語言不是專門針對UNIX操作系統(tǒng)或機器編寫的,但它與UNIX系統(tǒng)的關(guān)系十分緊密。由于它的硬件無關(guān)性和可移植性,使C語言逐漸成為世界上使用最廣泛的計算機語言。
讀者通過親自動手安裝Linux操作系統(tǒng),對Linux有個初步的認識,并且加深對Linux中的基本概念的理解,熟悉Linux文件系統(tǒng)目錄結(jié)構(gòu)。
GNU CC是GNU項目中符合ANSI C標(biāo)準(zhǔn)的編譯系統(tǒng),能夠編譯用C、C++和Object C等語言編寫的程序。gcc不僅功能強大,而且可以編譯如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多種語言,而且gcc是一個交叉平臺編譯器。
調(diào)試是所有程序員都會面臨的問題。如何提高程序員的調(diào)試效率,更好、更快地定位程序中的問題從而加快程序開發(fā)的進度,是大家都很關(guān)注的問題。就如讀者熟知的Windows下的一些調(diào)試工具,如Visual Studio自帶的設(shè)置斷點、單步跟蹤等,都受到了廣大用戶的贊賞。
到此為止,讀者已經(jīng)了解了如何在Linux下使用編輯器編寫代碼,如何使用gcc把代碼編譯成可執(zhí)行文件,還學(xué)習(xí)了如何使用gdb來調(diào)試程序,那么,所有的工作看似已經(jīng)完成了,為什么還需要make這個工程管理器呢?
在上一小節(jié),讀者已經(jīng)了解到了make項目管理器的強大功能。的確,makefile可以幫助make完成它的使命,但要承認的是,編寫makefile確實不是一件輕松的事,尤其對于一個較大的項目而言更是如此。那么,有沒有一種輕松的手段生成makefile而同時又能讓用戶享受make的優(yōu)越性呢?
通過指定指令的vi操作練習(xí),使讀者能夠熟練使用vi中的常見操作,并且熟悉vi的3種模式,如果讀者能夠熟練掌握實驗內(nèi)容中所要求的內(nèi)容,則表明對vi的操作已經(jīng)很熟練了。
本章是Linux中進行C語言編程的基礎(chǔ),首先講解了C語言編程的關(guān)鍵點,這里關(guān)鍵要了解編輯器、編譯鏈接器、調(diào)試器及項目管理工具等概念。
串口是計算機一種常用的接口,常用的串口有RS-232-C接口。它是于1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定的用于串行通信的標(biāo)準(zhǔn),它的全稱是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間串行二進制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。
由于本章是講解Linux編程開發(fā)的第1章,因此希望讀者更加明確Linux系統(tǒng)調(diào)用和用戶編程接口(API)的概念。在了解了這些之后,會對Linux以及Linux的應(yīng)用編程有更深入的理解。
Google 正在開發(fā)新操作系統(tǒng) Fuchsia,使用名叫 Zircon 的微內(nèi)核。它是作為一個開源項目開發(fā)的,因此外界能跟蹤它的開發(fā)進度?,F(xiàn)在,Google 發(fā)布了一個叫“the-book”的文檔頁, 聲明 Fuchsia 不是 Linux,而是一種模塊化的,基于能力的操作系統(tǒng)(A modular, capability-based operating system),然后介紹了新操作系統(tǒng)的子系統(tǒng)和其它信息,包括 Zircon 內(nèi)核、核心、框架、存儲、顯示、媒體、智能、用戶界面、向后兼容等等。Fuchs
在Linux中對目錄和設(shè)備的操作都等同于文件的操作,因此,大大簡化了系統(tǒng)對不同設(shè)備的處理,提高了效率。Linux中的文件主要分為4種:普通文件、目錄文件、鏈接文件和設(shè)備文件。
Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社區(qū)版本。相比RHEL,F(xiàn)edora打包了顯著的更多的軟件包。其中一個原因是,多樣化的社區(qū)參與Fedora的建設(shè);它不只是一家公司。在這個過程中,CentOS用于活動,演示和實驗,因為它是對最終用戶免費提供的,并具有比Fedora的一個更長的發(fā)布周期(通常每隔半年左右發(fā)布一個新版本)。