歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux C第一課

Linux C第一課

日期:2017/3/3 11:32:18   编辑:Linux技術

一、現代社會,當我們程序猿拿到一部智能設備,心裡在想什麼呢?當然是這個智能設備是由什麼組成的啦。智能設備的組成包括它的硬件平台和軟件平台。硬件平台就是指CPU,CPU有很多系列,常見的有51單片機,avr,ARM,mips,PowerPC等,其中ARM又分為ARM7(stm32),ARM9(2440,2451),ARM11(6410三星),和cotex-A系列;x86又分為386和486。軟件平台就是操作系統,現在流行的操作系統有Windows,linux,ISO,Android,wince,VxWorks,μcosii等。

二、那麼什麼是嵌入式呢?嵌入式就是在已有的平台上移植(修改操作系統源碼)操作系統(內核)後做相應的開發(應用軟件開發,系統軟件開發)。操作系統是用來管理硬件資源和軟件資源的。目前做應用軟件開發需要熟練掌握一門語言並且熟悉一款操作系統,而做系統軟件開發則需要我們精通C語言,熟悉匯編,理解操作系統的實現和熟悉硬件操作原理。

三、現在有操作系統的就稱為嵌入式,那麼嵌入式的優勢在哪裡呢?首先操作系統提高了軟件的可移植性,其次使得軟件開發人員不在需要熟悉硬件的工作原理,再次操作系統提供了多任務機制(進程和線程),而且嵌入式技術提供了豐富的網絡協議棧和很多開源 的工具,庫和軟件。

四、嵌入式操作系統的分類:按收費模式劃分:①商用型:VxWorks(美國軍方用,航空航天),Wince(Windows的一款,常用於出租車計價器,POS機,超市收銀等)②免費性:Linux,μcLinux,μC/OS-II(源代碼較少);按實時性劃分(規定時間內完成規定操作):①硬實時:VxWorks②軟實時:Wince,RTLinux,μC/OS-II(通過軟件調度算法來實現)③無實時:Embedded Linux。

五、促進Linux發展的三大因素:第一、GPL計劃,開源社區裡的交流,更好的維護了Linux操作系統;第二、POSIX標准,在此標准下產生的軟的軟件都可以兼容Unix和Linux;第三、DNU計劃,提出Linux於Unix的不同之處。

六、GCC編譯器

GNU CC(簡稱GCC),它是GNU項目中符合ANSI C標准的編譯系統,能夠編譯多種語言,包括C,C++,JAVA,Object C。gcc 是一個交叉平台編譯器,它能夠在當前CPU平台上為多種不同體系結構的硬件平台開發軟件(不同的CPU喲不同的匯編,生成不同的機器碼)。

從.c文件到可執行文件要經歷四個過程:預處理階段,編譯,匯編,鏈接。

gcc -E 預處理階段生成.i文件。預處理階段主要完成三個功能:加載頭文件,宏替換,條件編譯,總得來說就是處理#開頭的語句

gcc -c編譯階段生成.o文件即目標文件,分為可重入目標文件和不可重入目標文件。可重入即可以重復進入,目標文件在鏈接的過程中可以被中斷,主要用於多任務環境中,不依賴於任何外部環境,切編譯結果可預測,沒有靜態數據結構。不可重入目標文件的特征:用到了靜態數據結構(內部存儲器),malloc,free和標准I/O函數等,且多次鏈接的結果不一定相同。

gcc -S匯編階段生成 .s文件

gcc file.c -o file 鏈接階段 鏈接階段是不可以停止的,主要操作:符號(函數名、變量名都稱為符號)的導入,文件的加載(鏈接)

gcc -w file 關閉所有警告

gcc -Wall file 打開所有警告

gcc 的優化選項

-O0 默認優化選項,不優化

-O1 一級優化,減少目標文件大小以及執行時間,且不會是編譯時 間顯著增加(在編譯大程序時顯著增加編譯內存的使用)

-O2 二級優化,包含幾乎所有優化,編譯器不執行循環展開以及函數內聯

-Os 專門優化目標文件大小(執行所有不增加目標文件大小的-O2優化選項)

-O3 在O2的基礎上增加了產生inline函數,使用寄存器等優化技術

** #include

Copyright © Linux教程網 All Rights Reserved