Linux C 編程的基礎
1.什麽是操作系統?
操作系統是一系列的軟件,是程序。我們可以這樣類似的理解操作系統,我們操作計算機類似於操作汽車,我們的汽車有車身,動力系統,制動系統,轉向系統等等,我駕駛汽車不是直接去操作具體的硬件,比如我們要轉彎的時候不是自己直接最終控制轉向的車輪,而是通過汽車操作系統提供的方向盤來控制,這裏的汽車:轉向系統向用戶提供了接口:方向盤。同樣動力系統向司機提供了:油門接口,我們不可能直接自己推動前進。通過汽車系統提供的方向盤,剎車,油門等來操控計算機。這種操控更加安全,精準,效率高,穩定。子系統組合起來就是一個完整的汽車得到操作系統。操作系統也是這樣的,一些的程序分管不同硬件,組成一些小的子系統,最終和起來組成的計算機系統。
2.計算機語言歷史
客觀概念 機器語言 匯編語言 C語言
加法 1001,0001 add +
減法 1001,0010 sub -
3.計算機的體系結構
第一層:應用程序層
第二層:操作系統層
第三層:硬件物理層
4. 程序的從源代碼到可執行程序的過程
1.預編譯
gcc -E hello.c -o hello.i
cpp -E hello.c -o hello.i //gcc 集成了預處理器cpp的
在C語言程序中,所有以#開頭的都是預處理指令,是給cpp預處理軟件下的指令.同時去掉了註釋
gcc -E hello.c -o hello.i -v //參數-v顯示編譯的過程
2.編譯
將hello.i 編譯翻譯成匯編 hello.s
AT&T 匯編 Linux
X86 匯編
gcc -S hello.i -o hello.s
3.匯編
把匯編文件翻譯成機器語言叫匯編 hello.o object文件
gcc -c hello.s -o hello.o
4.鏈接
運行時文件,庫文件,啟動代碼 鏈接link
gcc hello.o
將目標文件和運行時文件,庫文件進行鏈接形成可執行文件。
5. hello.c 源程序 hello.i 預處理後的文件 hello.s 匯編語言的文件 hello.o 目標文件,二進制文件
gcc的常用參數 -E 預處理 -S 編譯為匯編語言 -c 編譯為目標文件 -o 輸出文件 -v 顯示整個編譯過程信息
6.以上的過程只是一個基本的框架,還有鏈接,加載的流程。
Linux C 編程的基礎