iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

30 天精通 C 語言建置與除錯:從 Makefile 到 CMake 跨平台實戰 系列

身為程式語言的「小白」,在偶然機會成為軟體工程師後,面對了許多人望而卻步的 C 語言工作。這對我而言是挑戰,也是成長的契機! 因此決定把一路跌跌撞撞的學習歷程寫下來和大家分享。從 VSCode 搭配 WSL 開始,到gcc 編譯、Makefile,理解如何從.c到執行檔,到接觸CMake,弄懂 CMakeLists.txt與makefile差異,並學會使用Make、Ninja...等建置環境,在除錯方面,學會了如何利用 gdb 下斷點、在vscode除錯以及使用 Python 輔助分析。希望能透過這30篇的紀錄分享,陪伴一同樣在學 C 的人,從陌生到熟悉,找到屬於自己開發節奏!

參賽天數 24 天 | 共 24 篇文章 | 6 人訂閱 訂閱系列文 RSS系列文
DAY 11

[Day 11] [make] MAKE 指令和魔法變數

前情提要 [Day 10] 有了makefile了? 那我們開始編譯吧! - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天在前面的章節中我們學會寫ma...

2025-09-10 ‧ 由 betahcy 分享
DAY 12

[Day 12][make] make 專案目錄規劃實作解析

[Day 11] MAKE 指令和魔法變數 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天在Day11 的時候我們解釋了什麼叫做 make clea...

2025-09-11 ‧ 由 betahcy 分享
DAY 13

[Day 13] [make+ system-setup]解決 VSCode + WSL 權限問題 Makefile 符號 Cheat Sheet

你今天會學到 更詳細的wsl 設定方法 總結一下[Day 12] make 專案目錄規劃實作解析 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天的...

2025-09-12 ‧ 由 betahcy 分享
DAY 14

[Day 14][make] 看過有一個makefile的專案了? 那我們來看看兩個以上makefile專案→瞭解子 makefile 與遞迴 make

前情提要 在 [Day 12] make 專案目錄規劃實作解析的時候我們學會用makefile控制不同系統的編譯 gcc/clang....etc。這篇文章我們...

2025-09-13 ‧ 由 betahcy 分享
DAY 15

[Day 15] [make] 繼續看懂遞迴make在做什麼...

延續之前文章中的內容... [Day 14]講了如何建構含有多個makefile的專案,今天我們會繼續學會怎麼解讀子資料夾calc以及app裡面的訊息。 專案的...

2025-09-14 ‧ 由 betahcy 分享
DAY 16

[Day 16] [gcc+make] 靜態函示庫? 動態函示庫? 如何用gcc/make編譯兩者?

這篇你會學到 什麼是函示庫? 靜態函示庫和動態函示庫的差別是什麼? 為什麼要有兩種不同的版本? 完整的前文小回顧 前文小回顧 工具安裝 gcc Day 3...

2025-09-15 ‧ 由 betahcy 分享
DAY 17

[Day 17][make] 用make編譯出靜態/動態檔

這篇文章你會學到的 用make編譯出靜態檔 .a 用make編譯出動態檔 .so 用make編譯出靜態檔 .a 步驟: 把.c 變成 .o 把.o變...

2025-09-16 ‧ 由 betahcy 分享
DAY 18

[Day 18] [make → cmake] makefile在大型專案中的問題

makefile的缺點 可攜性差、容易綁平台 主要原因在於 makefile 容易被寫成 shell 指令字串的串接器,就是一旦把它當成跑 shell 指令的工...

2025-09-17 ‧ 由 betahcy 分享
DAY 19

[Day 19] [make→cmake] 用cmake補足makefile的限制

make 痛點回顧 簡而言之 GCC/Clang/MSVC 旗標差很大,同一份 Makefile 要在 Linux/macOS/Windows 都順跑很難 可...

2025-09-18 ‧ 由 betahcy 分享
DAY 20

[Day 20] [make→cmake] 執行人生中第一個CmakeList

PS: 今天我們要重回狗狗迷因了!! 今天會學到的 複習用makefile 編譯的方法 (這邊的makefile用小寫跟cmake編出來的做區分) 用cmak...

2025-09-19 ‧ 由 betahcy 分享