天天看點

《嵌入式 Linux C 語言應用程式設計(修訂版)》——2.1 嵌入式Linux下C語言概述

本節書摘來異步社群《嵌入式 linux c 語言應用程式設計(修訂版)》一書中的第2章,第2.1節,作者:華清遠見嵌入式教育訓練中心,孫瓊,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

嵌入式 linux c 語言應用程式設計(修訂版)

讀者在第一章中已經了解了嵌入式開發的基本流程,在嵌入式系統中應用程式的主體是在主控端中開發完成的,就嵌入式linux而言,此過程則一般是在安裝有linux的主控端中完成。

在本章中介紹的實際是嵌入式linux下c語言的開發工具,使用者在開發時往往是在linux主控端中對程式進行調試,然後再進行交叉編譯的。

c語言于20世紀70年代誕生于美國的貝爾實驗室。在此之前,人們編寫系統軟體主要是使用彙編語言。

彙編語言編寫的程式依賴于計算機硬體,其可讀性和可移植性都比較差。而進階語言的可讀性和可移植性雖然較彙編語言好,但一般進階語言又不具備低級語言能夠直覺地對硬體實作控制和操作而且執行速度快等特點。

在這種情況下,人們迫切需要一種既具有一般進階語言特性,又具有低級語言特性的語言,于是c語言就應運而生了。

由于c語言既具有進階語言的特點又具有低級語言的特點,是以迅速普及,成為當今最有發展前途的計算機進階語言之一。c語言既可以用來編寫系統軟體,也可以用來編寫應用軟體。現在,c語言已經被廣泛地應用在除計算機行業外的機械、建築和電子等各個行業中。

c語言的發展曆程如下。

c語言最初是美國貝爾實驗室的d.m.ritchie在b語言的基礎上設計出來的,此時的c語言隻是為了描述和實作unix作業系統的一種工作語言。在一段時間裡,c語言還隻在貝爾實驗室内部使用。

1975年,unix第6版公布後,c語言突出的優點引起人們的普遍注意。

1977年出現了可移植的c語言。

1978年unix第7版的c語言成為後來被廣泛使用的c語言版本的基礎,被稱為标準c語言。

1983年,美國國家标準化協會(ansi)根據c語言問世以來的各種版本,對c語言進行發展和擴充,并制定了新的标準,稱為ansi c。

1990年,國際标準化組織iso制定了iso c标準,目前流行的c語言編譯系統都是以它為标準的。

c語言兼有彙編語言和進階語言的優點,既适合于開發系統軟體,也适合于編寫應用程式。被廣泛應用于事務處理、科學計算、工業控制、資料庫技術等領域。

c語言之是以能存在和發展,并具有強大的生命力,這都要歸功于其鮮明的特點。這些特點是多方面的,歸納如下。

1.c語言是結構化的語言

c語言采用代碼及資料分隔的方式,使程式的各個部分除了必要的資訊交流外彼此獨立。這種結構化方式可使程式層次清晰,便于使用、維護以及調試。

c語言是以函數形式提供給使用者的,這些函數可友善地調用,并具有多種循環、條件語句控制程式流向,進而使程式完全結構化。

2.c語言是子產品化的語言

c語言主要用于編寫系統軟體和應用軟體。一個系統軟體的開發需要很多人經過幾年的時間才能完成。一般來說,一個較大的系統程式往往被分為若幹個子產品,每一個子產品用來實作特定的功能。

在c語言中,用函數作為程式的子產品機關,便于實作程式的子產品化。在程式設計時,将一些常用的功能子產品編寫成函數,放在函數庫中供其他函數調用。子產品化的特點可以大大減少重複程式設計。程式設計時,隻要善于利用函數,就可減少勞動量、提高程式設計效率。

3.程式可移植性好

c語言程式便于移植,目前c語言在許多計算機上的實作大都是由c語言編譯移植得到的,不同機器上的編譯程式大約有80%的代碼是公共的。程式不做任何修改就可用于各種型号的計算機和各種作業系統。是以,特别适合在嵌入式開發中使用。

(4)c語言運算符豐富、代碼效率高

c語言共有34種運算符,使用各種運算符可以實作在其他進階語言中難以實作的運算。在代碼品質上,c語言可與彙編語言媲美,其代碼效率僅比用彙編語言編寫的程式的代碼低10%~20%。

嵌入式linux c語言程式設計與在其他環境中的c程式設計很類似,也涉及編輯器、編譯連結器、調試器及項目管理工具的使用。現在我們先對這4種工具進行簡單介紹,後面會對其一一進行講解。

1.編輯器

嵌入式linux下的編輯器就如windows下的word、記事本等一樣,完成對所錄入文字的編輯功能,最常用的編輯器有vi(vim)和emacs,它們功能強大,使用友善,本書重點介紹vi和emacs。

2.編譯連結器

編譯過程包括詞法、文法和語義的分析、中間代碼的生成和優化、符号表的管理和出錯處理等。在嵌入式linux中,最常用的編譯器是gcc編譯器。它是gnu推出的功能強大、性能優越的多平台編譯器,其執行效率與一般的編譯器相比平均效率要高20%~30%。

3.調試器

調試器可以友善程式員調試程式,但不是代碼執行的必備工具。在程式設計的過程當中,調試所消耗的時間遠遠大于編寫代碼的時間。是以,有一個功能強大、使用友善的調試器是必不可少的。gdb可以友善地設定斷點、單步跟蹤等,足以滿足開發人員的需要。

4.項目管理器

嵌入式linux中的項目管理器“make”類似于windows中visual c++裡的“工程”,它是一種控制編譯或者重複編譯軟體的工具,另外,它還能自動管理軟體編譯的内容、方式和時機,使程式員能夠把精力集中在代碼的編寫上而不是在源代碼的組織上。

繼續閱讀