Linux學習之路(4)

2021-08-31 23:34:32 字數 3324 閱讀 7702

gcc的使用

1、計算機能識別的唯一語言是二進位制語言

語言的發展:

機器語言

二進位制資料:1101 0101

組合語言

用符號表示一組操作 add call mov…  

優:直接操作硬體,速度快

高階語言

以語句為單位進行操作

優:可移植

c語言是中級語言,具備組合語言的特性,同時也具備高階語言可移植的特性

不管什麼語言,要想被計算機執行,必須先轉換為機器碼

編譯器:將原來的**(源**)編譯成計算機可執行的**(程式)

相同的**經過不同的編譯器編譯,可以被不同的裝置執行

linux系統常用的編譯c語言的編譯器是:gcc

2、c語言程式編譯步驟

預處理(預編譯)

處理"#"開頭的內容,進行替換,去掉注釋。。

生成預處理檔案.i

編譯編譯器對**進行編譯——>最複雜、耗時的過程

生成彙編檔案.s

彙編把彙編檔案編譯成二進位制檔案

生成目標檔案.o

鏈結把多個目標檔案按一定的規則整合成乙個可執行檔案

生成最終可執行程式

3、gcc的命令

gcc -e

對檔案進行預處理,生成預處理檔案

gcc -s

對檔案進行編譯,生成彙編檔案

gcc -c

對檔案進行彙編,生成目標檔案

gcc -o

對檔案進行重新命名

gcc 預設生成檔名為 a.out

如果想自定義生成的檔名,編譯時加" -o 新檔名"

如果在程式中使用了"math.h"檔案,編譯時要在後面加" -lm"

4、程式執行

linux下執行程式,直接在終端敲檔名(帶上路徑,相對路徑或者絕對路徑)

./a.out             "./ "不是命令,是相對路徑的寫法,代表當前目錄

/mnt/hgfs/code/171/4/a.out          絕對路徑

網絡卡設定

改虛擬機器為固定ip:/etc/network/inte***ces

網絡卡重啟:/etc/init.d/networking restart

關網絡卡:ifdown eth0

開網絡卡:ifup eth0

hello wold

1、標頭檔案的包含方式

#include

預設從/usr/include/目錄下搜尋檔案

#include "stdio.h"

#include "../stdio.h"

先在當前目錄下搜尋檔案,如果沒有,再去/usr/include 下找

2、stdio.h

c語言的標準輸入輸出標頭檔案

3、main

1、有返回值,返回值是int型別,用來表示程式結束狀態,如果程式正常結束,返回0,異常結束,返回其他值

2、c語言有且只有乙個main函式

3、程式是從main函式開始執行的

4、{}  :**塊

5、return : 表面函式結束,下面的部分都不執行

6、printf():stdio.h中定義的乙個函式,使用該函式必須包括stdio.h標頭檔案

7、注釋:

1、//                單行注釋

1、/*  */       多行注釋

8、編碼規範

1、"{"下面一行內容和"{"要有4個空格的縮排

2、單詞之間要有空格

3、不同的邏輯之間要有空行

9、c語言語句是以";"結尾

記憶體程式:

1、沒有執行的程式              就是一堆**,存在儲存裝置中,如:硬碟,u盤

2、執行的程式                     程式會被讀到記憶體中執行,記憶體中存該程式的可執行**,資料等

儲存單位:

1、bit

位,位元,是乙個二進位制數字,只能表示0或1,單位是b

2、byte

位元組,單位是b        1b=8b ==> 是記憶體的最小儲存單位

3、kb

1kb=1024b          =  210 ?

4、mb

1mb=1024kb       =  220 ?

5、gb

1gb=1024mb       =  230 ?

記憶體最小的儲存單位是位元組,如何管理?

記憶體為每個位元組分配了乙個編號,類似於人多身份證號==>這個編號就是記憶體的位址

編號?==>是乙個數字,是否有範圍?

記憶體為位元組分配的編號位數和身份證號一樣是固定的

1、 32位系統

編號是32位

進製二進位制

0000000……101010(32位)

2、 64位系統

編號是64位

進製二進位制

0000000……101010(64位)

32位系統 ————>記憶體編號是4位元組編號—————>最大能有多少位元組?

範圍:0000…0000(32個)————>  1111…1111(32個)

0                   ————> 232−1

總共232位元組==4g?

資料儲存

記憶體存的是二進位制資料,以1個位元組為例:

1、無符號數:0000 0000 ————> 1111 1111

0           ————> 255(28−1)

2、有符號數:帶正負的數

記憶體取最高位為符號位

最高位型別0正

1負存:正數在記憶體中的存的資料本身

負數是要轉換成二進位制,對其取反,符號位不變,然後+1

比如:5:實際在記憶體中的值為:0000 0101

-5:1000 0101(-5)————>1111 1010(取反)————>1111 1011(+1)

所有,-5實際上在記憶體中的值為:1111 1011

0在記憶體中為: 0000 0000

-0=-128:         1000 0000

有符號數取值範圍:1000 0000~01111111

(−27) -128 ~  127  (27−1)

有符號數,在乙個位元組範圍內:

127+1 = -128

127 在記憶體中的儲存: 0111  1111

1在記憶體中的儲存:     0000  0001

和                       :    1000  0000   ===>-128

1111 1111 代表 -1

Linux學習之路 day 4

一 檔案目錄類 1.pwd 顯示當前目錄的絕對路徑。絕對路徑 從根目錄 開始寫起的檔案或目錄名稱,即從根目錄開始定位到需要的目錄中去 相對路徑 相對於當前路徑的寫法,即從當前工作目錄開始定位到需要的目錄中去 2.ls 列出當前目錄中所有的子目錄和檔案。不包含 開頭的檔案 a 顯示當前目錄下的所有檔案...

linux學習之路4 目錄的結構

1 windows下的目錄結構,xp系統為例 在裝好系統之後,預設有三個資料夾 document and setings 不知道對不對 ds program files pf windows w 這個資料夾。其中ds裡面存放的是使用者的 家 目錄 在14章講 program files 預設的安裝路...

Linux學習之路

一直想學習linux,就其原因,一是懂這個的都被認為水平比較高,二是懂這個的工資也不低,這兩點我也是比較看重的。想學linux也不是一件簡單的事,因為用windows的東西太久了,從3.1到95 98 se nt 2000 me xp 2003,直至最新的windows 7 2008等,全算下來,有...