Linux 開發核心技能。新手推薦 Vim:輕量、無處不在、鍵盤導向。必會操作:多模式編輯、搜尋/取代、標記跳轉、分割視窗、巨集錄製。Emacs 則是可延伸的 Lisp 環境,適合重度定製需求。
VPATH、include 等核心語法。aclocal → autoconf → automake 生成標準 configure 腳本,支援跨平台建構、依賴檢測、安裝規範。大型開源專案標配。-Wall -O2 -g -std=c99 -I -L -l)、預處理/編譯/組譯/鏈接四階段、靜態/動態庫製作、pkg-config 管理庫依賴。gdbserver)。手動編譯大型專案能深刻理解模組依賴圖,是架構師必修課。
掌握分支策略、合併、衝突解決、標籤、子模組。嘗試參與 SourceForge/GitHub 開源專案,體驗協作流程。
系統調用是應用與內核的契約。**Stevens《UNIX 環境高級編程》(APUE)** 必讀。重點領域:
fork, exec, wait, 僵屍/孤兒進程)、訊號處理。socket API、I/O 多路複用 (select/poll/epoll)、非阻塞 I/O。進階推薦:**Stevens《UNIX 網路編程》(UNP)**、《TCP/IP 協議詳解》卷 1-3、《Linux 核心原理分析》。
| 庫 | 定位 | 核心特性 | 典型應用 |
|---|---|---|---|
| GLib | 基礎設施庫 (GTK+/GNOME 根基) | 跨平台、資料結構 (列表、樹、雜湊、隊列)、字串工具、主循環、執行緒抽象、模組載入、測試框架 | GIMP, GNOME, Gaim, Evolution, Heartbeat 叢集 |
| libxml2 | XML 解析標準庫 | DOM/SAX/Reader 多種 API、XPath、XInclude、RelaxNG 驗證、高效能、記憶體管理 | 所有採 XML 設定檔的專案 |
| Readline | 命令列交互增強 | 歷史記錄、Tab 補全、行編輯、鍵位綁定、可自訂補全邏輯 | Bash, GDB, 所有 CLI 工具 |
| ncurses | 終端機 UI (TUI) | 光標定位、顏色/屬性、視窗/面板、表單/選單、鍵盤/滑鼠事件、軟體終端適配 | Vim, htop, make menuconfig, 文字模式安裝程式 |
| GTK+ / Qt | 圖形界面工具包 | 完整控件集、佈局、信號槽/回調、主題引擎、無障礙、國際化、OpenGL 整合 | Linux 桌面主流應用 (GIMP, Inkscape, Wireshark...) |
學習建議:先精通 GLib 資料結構與主循環,再按專案需求切入 GTK+/Qt 或網路/系統層庫。
sendfile, splice)、協議解析 (Protobuf, FlatBuffers)、TLS/SSL (OpenSSL/mbedTLS)。libnet (封包構造/注入)、libpcap (抓包)、Wireshark (分析)、iperf (效能測試)。Linux C 開發是一條「工具→系統→庫→網路」的深造之路。工具鏈決定效率上限,系統調用決定底層掌控力,庫選型決定開發速度與品質,網路能力決定系統邊界。以 APUE/UNP 為基石,在實戰中沉澱出屬於自己的技術棧。