1. 程式人生 > >Linux C 編程的基礎

Linux C 編程的基礎

bject 預處理 同時 開頭 處理 不同 操作系統 控制 語言

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 編程的基礎