開篇:代碼分享不寫註釋,等於耍流氓
-
代碼的zip文檔已通過審覈:C語言查看linux磁盤卷設備/分區信息
-
github鏈接:C語言+linux glib/gio庫查看卷設備信息
cpu結構 :x86_64
代碼編寫:中標麒麟兆芯系統B61(rpm系)
代碼編譯成功:中標麒麟兆芯系統B61(rpm系)、優麒麟社區版19.10(deb系)
代碼運行測試:中標麒麟兆芯系統B61(rpm系)
代碼來源:開源linux系統中caja文件管理器中磁盤管理部分
代碼截圖
README文件
[置頂]代碼中的API可以百度"**GNOME開發者中心**"
[GNOME開發者中心](https://developer.gnome.org/index.html.zh_CN)
[置頂]代碼裏的註釋是經過考慮的,相同代碼的不同註釋是爲了增強讀者的理解
[置頂]如果有錯誤的地方,請批正
## 1、 運行須知:
雖然該程序不涉及圖形化界面,但是運行是仍然需要在本機上運行
遠程ssh運行結果會有異常
當然,遠程運行也不會報告程序錯誤,我反而也希望你能在遠程ssh下運行,對比下輸出結果
## 2、 項目介紹:
common.c 根據驅動GDrive/卷設備GVolume查看具體卷設備的信息
volume-connected-drives.c 查看linux系統上與驅動GDrive有關的所有卷設備
volume-no-drives.c 查看linux系統上與驅動無關的卷設備
## 3、 設備劃分舉例:(來自於項目中的理解)
驅動有關的設備:/dev/sd*設備、u盤設備
與驅動無關的設備:lvm分區
## 4、 項目涉及知識:
- linux libglib-2.0.so 和 libgio-2.0.so中磁盤操作的API的運用
- Makefile文件書寫(只有實際案例,具體makefile規則請自己百度學習)
- 一個makefile生成多個可執行文件
- pkg-config命令用法
- 不使用Makefile如何編譯生成二進制
5、Makefile簡單介紹:[TAB]表示一個TAB按鍵
------------------------------------------------------------------
```makefile
all:目標二進制a.out //表示make根據該makefile要生成二進制a.out
a.out : 幾個.o文件 //表示生成a.out需要依賴後面這幾個.o文件
[TAB]gcc *.o -o a.out //表示使用gcc把*.o編譯成二進制文件a.out
%.o : %.c //表示某個.o文件需要由同名.c文件編譯生成
[TAB]gcc -c .c //gcc使用-c生成同名.o文件
## 6、pkg-config命令簡介:
(1)出現原因:解決gcc 編譯時手動挨個制定 .h 和 .so的具體路徑(即-I和-L選項)
(2)用法實例:
pkg-config --cflags gio-2.0 //解決gcc -I指定gio API的頭文件路徑
pkg-config --libs gio-2.0 //解決gcc -L指定libgio-2.0.so的庫文件路徑
(3)工作原理:
pkg-config 命令依賴於.pc文件
你可以locate gio-2.0.pc後進入對應目錄查看當前linux上已安裝並可用的.pc文件