Cài đặt môi trường
Sau bài này bạn sẽ làm được
- Cài được GCC, Clang, GDB và các công cụ phụ trợ
- Cấu hình VS Code để build và debug bằng một phím
- Kiểm chứng môi trường bằng một chương trình đo kích thước kiểu dữ liệu
- Biết chọn môi trường phù hợp khi đang dùng Windows
Bạn cần ba thứ: một trình biên dịch, một editor, và một trình gỡ lỗi. Bài này hướng dẫn cài đủ cả ba, cấu hình VS Code để build bằng một phím, rồi kiểm chứng bằng một chương trình nhỏ.
#Chọn môi trường
Khóa học này lấy Linux làm môi trường chuẩn. Lý do không phải sở thích: từ Phần 13 trở đi bạn sẽ dùng liên tục các công cụ khảo sát nhị phân như readelf, objdump, strace, valgrind, perf. Chúng chỉ đầy đủ trên Linux.
| Bạn đang dùng | Nên chọn | Ghi chú |
|---|---|---|
| Linux | Dùng luôn | Không cần làm gì thêm |
| Windows | WSL2 với Ubuntu | Là Linux thật, tích hợp tốt với VS Code |
| macOS | Command Line Tools | Có Clang sẵn, nhưng thiếu valgrind và một số công cụ |
| Máy yếu, không cài được | Máy ảo hoặc dịch vụ trực tuyến | Replit, Compiler Explorer để thử nhanh |
#Cài trình biên dịch
GCC là lựa chọn chính
GCC là trình biên dịch C phổ biến nhất, cũng là thứ dùng để build nhân Linux. Cài kèm luôn gdb để gỡ lỗi và valgrind để bắt lỗi bộ nhớ.
sudo apt update
sudo apt install -y build-essential gdb valgrind# Fedora, RHEL
sudo dnf install -y gcc gdb make valgrind
# Arch
sudo pacman -S base-devel gdb valgrind
# macOS
xcode-select --installNên cài thêm Clang
Clang là trình biên dịch thứ hai, thông báo lỗi dễ đọc hơn GCC và có bộ sanitizer rất tốt. Code biên dịch sạch trên cả hai thường là code chất lượng, vì mỗi trình biên dịch bắt được những lỗi khác nhau.
sudo apt install -y clang clang-tidy clang-format#Nếu bạn dùng Windows
Có ba đường, nhưng chúng không tương đương nhau. Khuyến nghị mạnh là WSL2.
| Cách | Ưu điểm | Hạn chế |
|---|---|---|
| WSL2 | Là Linux thật, đủ mọi công cụ, VS Code kết nối trực tiếp | Cần Windows 10 phiên bản 2004 trở lên |
| MSYS2 hoặc MinGW-w64 | Chạy native trên Windows, có GCC | Thiếu valgrind, một số công cụ khảo sát khác biệt |
| MSVC | Tích hợp sẵn Visual Studio | Hỗ trợ chuẩn C rất chậm trễ, không khuyến nghị để học C |
Cài WSL2 chỉ mất một lệnh, chạy trong PowerShell quyền quản trị:
wsl --install -d Ubuntu#Editor và cấu hình
VS Code là lựa chọn khuyến nghị
Nhẹ, miễn phí, gỡ lỗi tốt, và kết nối thẳng vào WSL. Cài ba tiện ích mở rộng: C/C++ của Microsoft, Makefile Tools, và WSL nếu bạn đang ở Windows.
Tạo file .vscode/tasks.json để build bằng Ctrl Shift B:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "gcc",
"args": [
"-std=c17", "-Wall", "-Wextra", "-Wpedantic", "-g",
"${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"
],
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$gcc"]
}
]
}Và .vscode/launch.json để gỡ lỗi bằng F5. Cấu hình này tự build trước khi chạy, nên bạn không bao giờ debug nhầm bản cũ:
{
"version": "0.2.0",
"configurations": [
{
"name": "gdb debug",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"cwd": "${workspaceFolder}",
"MIMode": "gdb",
"preLaunchTask": "build"
}
]
}Code::Blocks cho hai tuần đầu
Nếu bạn hoàn toàn mới và thấy terminal đáng sợ, Code::Blocks là lựa chọn hợp lý: bản cài đặt đã kèm sẵn GCC, bấm một nút là chạy. Nhưng hãy chuyển sang VS Code kèm terminal sau khoảng hai tuần, vì từ Phần 2 trở đi bạn cần gõ lệnh trực tiếp.
#Kiểm chứng môi trường
Đừng tin là đã cài xong cho tới khi chạy được. Chương trình dưới đây vừa kiểm tra trình biên dịch, vừa cho bạn biết hai thông tin sẽ dùng lại nhiều lần về sau.
#include <stdio.h>
int main(void)
{
printf("Trinh bien dich hoat dong\n");
printf("Chuan C: %ld\n", __STDC_VERSION__);
printf("Kich thuoc con tro: %zu byte, he thong %zu-bit\n",
sizeof(void *), sizeof(void *) * 8);
return 0;
}Trinh bien dich hoat dong Chuan C: 201710 Kich thuoc con tro: 8 byte, he thong 64-bit
Giá trị 201710 nghĩa là trình biên dịch đang làm việc theo chuẩn C17. Con trỏ 8 byte nghĩa là hệ thống 64 bit. Hai con số này sẽ được giải thích kỹ ở Phần 1, bây giờ chỉ cần biết chúng xuất hiện là môi trường đã đúng.
#Vòng làm việc hằng ngày
Từ giờ tới hết khóa học, bạn sẽ lặp lại đúng bốn bước này. Càng quay vòng nhanh, càng học nhanh.
Tạo thư mục làm việc
mkdir -p ~/hoc-c/phan-0 && cd ~/hoc-c/phan-0Viết file nguồn
Mỗi bài tập một file
.criêng, đặt tên có nghĩa. Đừng gộp nhiều bài vào một file.Biên dịch và chạy trong một dòng
Dấu
&&đảm bảo chương trình chỉ chạy khi biên dịch thành công, nên bạn không bao giờ chạy nhầm bản cũ.gcc -std=c17 -Wall -Wextra -g bai.c -o bai && ./baiĐọc cảnh báo trước khi đọc kết quả
Nếu trình biên dịch in ra bất cứ dòng cảnh báo nào, sửa nó trước đã. Phần lớn cảnh báo của C đều báo hiệu một lỗi thật đang chờ xảy ra.
Tự làm thử
- Cài đủ GCC, Clang, GDB rồi chạy
gcc --versionvàclang --versionđể xác nhận. - Biên dịch
check.cbằng cả GCC và Clang, so sánh kết quả in ra. - Cấu hình VS Code với hai file trên, rồi thử build bằng Ctrl Shift B và debug bằng F5.
- Cố tình xóa một dấu chấm phẩy trong
check.crồi biên dịch. Đọc kỹ thông báo lỗi, ghi lại số dòng mà trình biên dịch báo.
Trình chấm điểm tự động sẽ được bổ sung ở giai đoạn sau. Hiện tại bạn tự chạy thử trên máy.
Tóm tắt
- Môi trường chuẩn của khóa học là Linux hoặc WSL2, vì đầy đủ công cụ khảo sát nhị phân nhất.
- Cài
build-essential,gdb,valgrind, và nên có thêm Clang để đối chiếu. - Luôn biên dịch với
-Wall -Wextra -Wpedantic -g. Cảnh báo được coi là lỗi. - VS Code cấu hình bằng tasks.json và launch.json cho phép build và debug bằng một phím.
- Vòng làm việc gồm bốn bước: viết, biên dịch, chạy thử, đọc lỗi và sửa.