GCC & Linker
理解 GCC 常用參數、startup files、shared library 與 linker script,建立編譯與連結的基本觀念。
從 GCC、Linker、GDB、Makefile、ELF 與 GNU Binutils,到 Linux 系統程式設計、多執行緒與 Embedded IoT,建立 Linux 開發工具與系統程式設計的完整基礎。
為什麼要學習 Embedded Linux Programming?這門課程在學習 Linux 系統程式設計與觀念,這是寫好 Linux 應用程式,並學好 Linux 驅動程式的基礎。Linux Threading 是經常應用在 Linux 應用程式的技術,也是重要的 Concurrency 觀念,同時也影響 Linux 驅動程式的設計。
GNU Toolchains 是 Linux 的主要開發工具,也是學習 Linux 的基本主題。因此,本課程不是把工具零散地逐一介紹,而是把重要的 Linux 系統程式觀念融入工具的操作過程,並透過一個連貫性的範例進行研究討論,使工具、觀念與實作形成一條完整的學習主線。
GNU Toolchains 是 Linux 的主要開發工具,這是學習 Linux 的基本主題。本訓練課程整理並精選主要的 Linux 系統程式入門主題,幫助初學者有效學習 Linux 開發工具與系統程式設計。
訓練學員使用 GNU 開發工具,並在工具的操作過程中講解重要的 Linux 系統程式觀念,將觀念融入工具的操作過程,並透過工具的操作驗證觀念。
因此,本課程不是單純介紹 GCC、GDB 或 Makefile 的使用方法,而是從 GNU Toolchains 切入,進一步整理編譯、連結、載入、除錯、系統呼叫、程序同步與多執行緒等重要主題,使 Linux 開發工具與系統程式設計形成一套完整且可驗證的學習架構。
程式設計部份,本課也以一個連貫性的範例進行研究討論(Web Server),藉此解析 Process、Signal、IPC、Socket 與 POSIX threads 的實務意義;讓學員在連續的主線中理解整體觀念,而不是停留在零碎知識。
理解 GCC 常用參數、startup files、shared library 與 linker script,建立編譯與連結的基本觀念。
透過 GDB、symbol table 與除錯環境建立,理解 Linux 程式在執行階段的分析方法。
從 GNU Binutils、ELF、loader 與 linker 切入,理解可執行檔與 shared library 的運作方式。
整理 system calls、process、signal、IPC、mmap、shared memory 與 socket 等 Linux 系統程式設計核心主題。
以 POSIX threads、producer-consumer、semaphore 與 Embedded IoT 實習,銜接多執行緒與嵌入式應用。
在工具的操作過程中講解重要的 Linux 系統程式觀念,將觀念融入工具的操作過程,並透過工具的操作驗證觀念。
這種教法的重點,不是把 GCC、Makefile、GDB 當成獨立主題,而是讓學員理解程式從 source code 到 executable,再到除錯、執行、同步與通訊的完整過程。工具只是入口,真正要建立的是 Linux 系統程式設計的整體觀。
本課也特別適合作為 Linux Device Driver 與 Embedded Linux 後續學習的基礎。這門課是寫好 Linux 應用程式,並學好 Linux 驅動程式的基礎。
對 Moko365 來說,這門課的價值不只來自 GNU Toolchains 本身,也來自它長期被當成 Linux 系統程式與 Embedded Linux 的入門核心。本課自 2009 年即已開班,2015 年 01 月 27 日完成第四次改版,第四版新增 GNU Toolchains for Embedded IoT 與 IoT 程式實習練習。
課程開始開班,建立 GNU Toolchains 與 Linux 系統程式設計的基礎教學主線。
版本變更紀錄顯示 2010 年 03 月、06 月與 07 月進行 agenda refined 與第三版初始版本整理。
完成第四次改版,新增 GNU Toolchains for Embedded IoT,並把 IoT 程式撰寫實習納入正式課綱。
累計已推出至仕橙版第 19 期,課程歷經多年公開課與企業內訓累積。
標準版維持 12 小時、2 天,企業版則依團隊背景調整主題比例。
企業內訓可依團隊背景,調整工具、系統程式與 Embedded IoT 的授課比例。
Jollen 在 Embedded Linux 與 Linux Device Driver 有超過 20 年的研發與企業內訓經驗,在 Android Framework 軟體架構方面,也有 15 年的授課經驗,並長期在科技業擔任 Linux & Android 技術顧問。
此外,Jollen 曾於 Linux 基金會舉辦的 Open Source Summit 全球開發者社群大會上,多次擔任講者發表演說,也於歐洲與加拿大發表有關區塊鏈與去中心化 IoT 架構的論文,並獲 ACM SIGBED Review 刊登。Jollen 於 2016 年創辦 Flowchain 基金會,開發原創區塊鏈作業系統技術,並獲多項相關國際專利。
這門課的特色,不只是內容完整,而是由長期從事 Embedded Linux、Linux 工具鏈、系統程式設計與驅動程式教學的講師主講,能夠將工具、觀念與實作整理成一條有邏輯的學習主線。
若您的團隊正在建立 Linux 開發工具鏈、補強系統程式設計基礎,或作為 Linux Device Driver 與 Embedded IoT 研發的前置訓練,本課程將提供一套較完整的工具觀、系統觀與分析方法。