linux指令學習5

1、fdisk打不開, 、/dev/sdb: 沒有那個檔案或目錄解決

簡單的說就是插入優盤,Sdb,具體過程是,我剛開始應用fdisk -l是會出現fdisk許可權不夠,dev/sdb許可權不夠,後來應用root模式,還是這樣。我加入優盤後出現下面情況,,整個指令敲得過程,看截圖。

linux指令學習5

linux指令學習5

linux指令學習5

linux指令學習5

後兩個表中的命令含義:

p

顯示現有的分割槽

n

建立新分割槽

t

更改分割槽型別

d

刪除現有的分割槽

a

更改分割槽啟動標誌

w

對分割槽的更改寫入到硬碟或者儲存器中。

q

不儲存退出。

由於我的 U 盤裡面還有一些重要的檔案,所以現在不能進行分割槽,這裡現在就不演示 fdisk的分割槽操作了,後面我們講解裸機例程的時候需要將可執行的 bin 檔案燒寫到 SD 卡中,燒寫到 SD 卡之前需要對 SD 卡進行分割槽,到時候在詳細講解如何使用 fdisk 命令對磁碟進行分割槽。

、格式化命令 mkfs

使用命令 fdisk 建立好一個分割槽以後,我們需要對其格式化,也就是在這個分割槽上建立一個

檔案系統,Linux 下的格式化命令為 mkfs,命令格式如下:

mkfs

[引數] [-t 檔案系統型別]

[分割槽名稱]

主要引數如下:

fs指定建立檔案系統時的引數

-V顯示版本資訊和簡要的使用方法。

-v顯示版本資訊和詳細的使用方法。

比如我們要格式化 U 盤的分割槽/dev/sdb1 為 FAT 格式,那麼就可以使用如下命令:

mkfs –t vfat /dev/sdb1

掛載分割槽命令 mount

我們建立好分割槽並且格式化以後肯定是要使用硬碟或者 U 盤的,那麼如何訪問磁碟呢?比

如我的 U 盤就一個分割槽,為/dev/sdb1,如果直接開啟檔案/dev/sdb1 會發現根本就不是我們要的結果。我們需要將/dev/sdb1 這個分割槽掛載到一個資料夾中,然後透過這個檔案訪問 U 盤,磁碟掛載命令為 mount,命令格式如下:

mount

[引數] -t

[型別] [裝置名稱] [目的資料夾]

命令主要引數有:

-V

顯示程式版本。

-h

顯示輔助資訊。

-v

顯示執行過程詳細資訊。

-o ro

只讀模式掛載。

-o rw

讀寫模式掛載。

-s-r

等於-o ro。

-w

等於-o rw。

掛載點是一個資料夾,因此在掛載之前先要建立一個資料夾,一般我們把掛載點放到“/mnt”

目錄下,在“/mnt”下建立一個 tmp 資料夾,然後將 U 盤的/dev/sdb1 分割槽掛載到/mnt/tmp 檔案

夾裡面,操作如圖

linux指令學習5

、解除安裝命令 umount

當我們不再需要訪問已經掛載的 U 盤,可以透過 umount 將其從解除安裝點卸除,命令格式如

下:umount [引數] -t

[檔案系統型別]

[裝置名稱]

-a

解除安裝/etc/mtab 中的所有檔案系統。

-h

顯示幫助。

-n解除安裝時不要將資訊存入到/etc/mtab 檔案中

-r如果無法成功解除安裝,則嘗試以只讀的方式重新掛載。

-t<檔案系統型別>

僅解除安裝選項中指定的檔案系統。

-v

顯示執行過程。上面我們將 U 盤掛載到了資料夾/mnt/tmp 裡面,這裡我們使用命令 umount 將其解除安裝掉

linux指令學習5

2、

Linux C 程式設計記錄vim修改和編輯流程

主要是vim的控制檔案修改過程,需要在root模式下進行修改

linux指令學習5

linux指令學習5

linux指令學習5

linux指令學習5

linux指令學習5

3、gcc編譯器

在上一小節我們已經使用過 GCC 編譯器來編譯 C 檔案了,我們使用到是 gcc 命令,gcc 命

令格式如下:

gcc

[選項] [檔名字]

主要選項如下:

-c:

只編譯不連結為可執行檔案,編譯器將輸入的。c 檔案編譯為。o 的目標檔案。

-o:

<輸出檔名>用來指定編譯結束以後的輸出檔名,如果不使用這個選項的話 GCC 默

認編譯出來的可執行檔名字為 a。out。

-g:

新增除錯資訊,如果要使用除錯工具(如 GDB)的話就必須加入此選項,此選項指示編

譯的時候生成除錯所需的符號資訊。

-O

:對程式進行最佳化編譯,如果使用此選項的話整個原始碼在編譯、連結的的時候都會進

行最佳化,這樣產生的可執行檔案執行效率就高。

-O2:

比-O 更幅度更大的最佳化,生成的可執行效率更高,但是整個編譯過程會很慢。

GCC 編譯器的編譯流程是:預處理、編譯、彙編和連結。預處理就是展開所有的標頭檔案、替換程式中的宏、解析條件編譯並新增到檔案中。編譯是將經過預編譯處理的程式碼編譯成彙編程式碼,也就是我們常說的程式編譯。彙編就是將組合語言檔案編譯成二進位制目標檔案。連結就是將彙編出來的多個二進位制目標檔案連結在一起,形成最終的可執行檔案,連結的時候還會涉及到靜態庫和動態庫等問題。上一小節演示的例程都只有一個檔案,而且檔案非常簡單,因此可以直接使用 gcc 命令生成可執行檔案,並沒有先將 c 檔案編譯成。o 檔案,然後再連結在一起。

4、

Makefile 基礎

何為 Makefile

上一小節我們講了如何使用 GCC 編譯器在 Linux 進行 C 語言編譯,透過在終端執行 gcc 命令來完成 C 檔案的編譯,如果我們的工程只有一兩個 C 檔案還好,需要輸入的命令不多,當檔案有幾十、上百甚至上萬個的時候用終端輸入 GCC 命令的方法顯然是不現實的。如果我們能夠編寫一個檔案,這個檔案描述了編譯哪些原始碼檔案、如何編譯那就好了,每次需要編譯工程的時只需要使用這個檔案就行了。這種問題怎麼可能難倒聰明的程式設計師,為此提出了一個解決大工程編譯的工具:make,描述哪些檔案需要編譯、哪些需要重新編譯的檔案就叫做 Makefile,Makefile 就跟指令碼檔案一樣,Makefile 裡面還可以執行系統命令。使用的時候只需要一個 make命令即可完成整個工程的自動編譯,極大的提高了軟體開發的效率。如果大家以前一直使用 IDE來編寫 C 語言的話肯定沒有聽說過 Makefile 這個東西,其實這些 IDE 是有的,只不過這些 IDE對其進行了封裝,提供給大家的是已經經過封裝後的圖形介面了,我們在 IDE 中新增要編譯的C 檔案,然後點選按鈕就完成了編譯。在 Linux 下用的最多的是 GCC 編譯器,這是個沒有 UI的編譯器,因此 Makefile 就需要我們自己來編寫了。作為一個專業的程式設計師,是一定要懂得Makefile 的,一是因為在 Linux 下你不得不懂 Makefile,再就是透過 Makefile 你就能瞭解整個工程的處理過程。