← Tất cả khoá học

C Thực Chiến · Toolchain & Kiểm soát chất lượng

Từ mã nguồn đến phần mềm xuất xưởng được

Biên soạn bởi Nguyễn Anh Tuấn

Trở thành lập trình viên C đi làm được (chuẩn C17): build bằng Make/CMake, định dạng & phân tích tĩnh (clang-format/clang-tidy), bắt lỗi bộ nhớ với sanitizers, gỡ lỗi, kiểm thử & CI - để dự án của bạn sạch và xuất xưởng được, tự tin khoe khi phỏng vấn. Kèm bài lab chạy trên máy bạn.

9 bài ~208 phút Đã xuất bản Cập nhật 11/06/2026

Học xong mèo con làm được gì?

  • Build dự án C bằng Make/CMake như khi đi làm, không còn gõ gcc thủ công từng tệp.
  • Tự bắt lỗi bộ nhớ và undefined behavior bằng sanitizers trước khi phần mềm tới tay người dùng.
  • Thiết lập định dạng mã, phân tích tĩnh và CI chạy tự động cho dự án của mèo con.
  • Tự tin nói "dự án của tôi sạch và xuất xưởng được" trong buổi phỏng vấn.

Lộ trình học

  1. 1 Hành trình biên dịch Bốn giai đoạn biên dịch C (compile): tiền xử lý → dịch → hợp dịch → liên kết; cờ gcc -E/-S/-c và cách đọc lỗi undefined reference của linker.
  2. 2 Thư viện & liên kết Thư viện tĩnh (.a) vs thư viện động (.so) trong C: symbol, linker giải quyết ký hiệu, include guard - hiểu lỗi undefined reference & multiple definition.
  3. 3 Make & đồ thị build Học Make qua đồ thị phụ thuộc: viết Makefile với target, prerequisites, recipe; build tăng dần (incremental build) chỉ dịch lại thứ cần thiết.
  4. 4 CMake & Meson Học CMake (và Meson) cho dự án C: CMakeLists.txt, build out-of-source, PUBLIC/PRIVATE/INTERFACE, find_package - chuẩn build system khi đi làm.
  5. 5 Định dạng mã (clang-format) Định dạng mã C tự động với clang-format: viết file .clang-format, format-on-save trong editor, kiểm tra format trong CI - diff sạch, hết tranh cãi style.
  6. 6 Phân tích tĩnh (clang-tidy) Phân tích tĩnh (static analysis) cho C: cảnh báo -Wall -Wextra -Werror, clang-tidy với nhóm check bugprone/readability, cppcheck - bắt lỗi trước khi chạy.
  7. 7 Sanitizers: ASan, UBSan, TSan AddressSanitizer, UBSan, TSan: bắt lỗi bộ nhớ (use-after-free, tràn bộ đệm) và undefined behavior lúc chạy với -fsanitize; so sánh với valgrind.
  8. 8 Gỡ lỗi, kiểm thử & CI Gỡ lỗi C với gdb/lldb: breakpoint, đọc stack trace; viết unit test với assert/ctest (Unity/CMocka); dựng CI GitHub Actions chạy kiểm tra tự động.
  9. 9 Capstone: dự án xuất xưởng Áp trọn quy trình chất lượng lên một dự án thật: CMake + clang-format + clang-tidy + sanitizers + unit test + CI - tới khi cả 6 cổng đều xanh.

Sắp bắt tay vào dự án thật?

Tên miền, VPS, hosting để đưa sản phẩm lên mạng - chọn ở trang Ưu đãi. Mua qua link là góp thêm “cá” nuôi Mèo, bạn không tốn thêm.

Ưu đãi & công cụ →