Windows tidak menyertakan compiler C bawaan—kita perlu memasang MinGW-w64 (port GCC untuk Windows) atau MSVC (Microsoft Visual C++) sebagai toolchain. Bab ini menuntun kita memasang kedua opsi, mengonfigurasi PATH, dan memverifikasi instalasi dengan program “Halo Dunia”. Kita juga membahas perbedaan model data LLP64 (Windows) versus LP64 (Linux) yang mempengaruhi ukuran long.
1. Opsi A: MinGW-w64 via MSYS2 #
MSYS2 adalah distribusi software yang menyediakan environment Unix-like di Windows dengan package manager pacman (sama seperti Arch Linux). Ini adalah cara termudah memasang GCC modern di Windows.
Langkah Instalasi #
- Download installer dari
https://www.msys2.org/. - Jalankan installer, install ke path default
C:\msys64. - Buka terminal MSYS2 UCRT64 dari Start Menu.
- Update database paket:
pacman -SyuJika diminta restart terminal, tutup dan buka kembali, lalu jalankan update sekali lagi:
pacman -Su- Pasang toolchain C:
pacman -S --needed mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-make \
mingw-w64-ucrt-x86_64-gdb \
mingw-w64-ucrt-x86_64-cmakeMenambahkan ke PATH Windows #
Agar compiler dapat dipanggil dari Command Prompt atau PowerShell:
- Buka
Settings→System→About→Advanced system settings. - Klik
Environment Variables. - Edit
Pathdi section User variables. - Tambahkan dua path:
C:\msys64\ucrt64\binC:\msys64\usr\bin
- Klik OK, lalu tutup semua dialog.
- Tutup dan buka kembali PowerShell.
Verifikasi #
Buka PowerShell baru (bukan MSYS2 terminal) dan jalankan:
gcc --version
make --version
gdb --versionOutput yang Dihasilkan (versi tergantung rilis):
gcc.exe (Rev6, Built by MSYS2 project) 14.2.0
GNU Make 4.4.1
GNU gdb (GDB) 15.22. Opsi B: Microsoft Visual C++ (MSVC) #
MSVC adalah compiler resmi Microsoft, didistribusikan sebagai bagian Visual Studio atau Build Tools. Lebih cocok bila kita perlu integrasi dengan Windows API atau library Windows-only.
Langkah Instalasi (Build Tools) #
- Download Build Tools for Visual Studio dari
https://visualstudio.microsoft.com/visual-cpp-build-tools/. - Jalankan installer.
- Pada installer GUI, centang workload Desktop development with C++.
- Klik Install—unduhan sekitar 6-8 GB.
- Setelah selesai, restart komputer.
Mengaktifkan Developer Command Prompt #
MSVC tidak menambahkan path secara global—kita perlu memakai Developer Command Prompt for VS atau Developer PowerShell. Cari di Start Menu.
Verifikasi:
clOutput yang Dihasilkan (cl.exe menampilkan banner):
Microsoft (R) C/C++ Optimizing Compiler Version 19.42.34435 for x64
Copyright (C) Microsoft Corporation. All rights reserved.Kompilasi dengan MSVC #
MSVC memakai flag berbeda dari GCC. Contoh compile program hello.c:
cl /std:c11 /W4 /EHsc hello.cFlag /std:c11 memilih standar C11, /W4 set warning level 4 (paling ketat), /EHsc set exception handling model.
3. Verifikasi dengan Hello World #
Buat file hello.c berikut:
/* File: hello.c - Verifikasi toolchain C */
#include <stdio.h>
int main(void) {
printf("Toolchain Windows siap\n");
return 0;
}Compile dan jalankan dengan MinGW-w64 (PowerShell):
gcc -std=c11 -Wall -Wextra -o hello.exe hello.c
.\hello.exeOutput yang Dihasilkan:
Toolchain Windows siapCompile dengan MSVC (Developer Command Prompt):
cl /std:c11 /W4 /EHsc hello.c
hello.exeOutput yang Dihasilkan (sama):
Toolchain Windows siap4. Perbedaan Model Data LP64 vs LLP64 #
Pada Windows 64-bit, long tetap 4 byte—berbeda dari Linux yang long = 8 byte. Ini disebut model data LLP64 (Long Long Pointer 64-bit).
| Tipe | Linux x86_64 (LP64) | Windows x64 (LLP64) |
|---|---|---|
int | 4 byte | 4 byte |
long | 8 byte | 4 byte |
long long | 8 byte | 8 byte |
void* | 8 byte | 8 byte |
size_t | 8 byte | 8 byte |
Program berikut memverifikasi perbedaan:
#include <stdio.h>
#include <limits.h>
int main(void) {
printf("sizeof(long) = %zu\n", sizeof(long));
printf("sizeof(long long) = %zu\n", sizeof(long long));
printf("LONG_MAX = %ld\n", LONG_MAX);
printf("LLONG_MAX = %lld\n", LLONG_MAX);
return 0;
}Di Linux LP64, output sizeof(long) = 8. Di Windows LLP64, output sizeof(long) = 4.
5. Troubleshooting #
gcc: command not found di PowerShell #
PATH belum diperbarui. Tutup semua jendela PowerShell, buka yang baru, lalu coba lagi. Jika tetap gagal, periksa:
echo $env:PATH
Test-Path C:\msys64\ucrt64\bin\gcc.exeBila file ada tetapi PATH tidak termuat, tambahkan manual untuk sesi saat ini:
$env:PATH += ";C:\msys64\ucrt64\bin"cl : The term 'cl' is not recognized #
PowerShell biasa tidak memuat environment MSVC. Gunakan Developer PowerShell for VS, atau jalankan vcvars64.bat dari Command Prompt biasa:
"C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"Warning: conversion from 'size_t' to 'int', possible loss of data #
MSVC lebih ketat dari GCC pada konversi implicit. Tambahkan cast eksplisit atau ubah tipe ke size_t bila perlu. Jangan abaikan warning ini—ini sumber bug sulit dideteksi.
Tidak bisa compile kode yang memakai pthread.h #
MinGW-w64 mendukung pthread sebagai Win32 thread. Tambahkan flag -pthread saat link:
gcc -std=c11 -Wall -Wextra -pthread -o app app.cMSVC tidak mendukung pthread secara native—gunakan Windows Threads API (CreateThread) atau library portabel seperti winpthreads.