macOS dilengkapi dengan toolchain resmi dari Apple: Xcode Command Line Tools, yang mencakup compiler Clang, make, dan header standar. Berbeda dari Linux, compiler default di macOS adalah Clang (bukan GCC) dan terintegrasi dengan system framework Apple. Bab ini menuntun kita memasang toolchain, memverifikasi dengan program “Halo Dunia”, dan menjelaskan beberapa karakteristik unik seperti universal binary dan path SDK.
1. Pemasangan Xcode Command Line Tools #
Kita tidak perlu mengunduh Xcode penuh (10+ GB) untuk pengembangan C—Command Line Tools (~1 GB) sudah cukup.
Cara Cepat: Otomatis via Terminal #
Buka aplikasi Terminal (Applications → Utilities → Terminal.app, atau tekan Cmd+Space lalu ketik Terminal), lalu jalankan:
xcode-select --installDialog akan muncul menanyakan konfirmasi pemasangan. Klik Install dan tunggu hingga selesai (biasanya 5-10 menit tergantung koneksi).
Verifikasi Pemasangan #
# Cek apakah tools terpasang
xcode-select -pOutput yang Dihasilkan (path mungkin sedikit berbeda tergantung versi macOS):
/Library/Developer/CommandLineToolsBila Xcode penuh terpasang, path akan menunjuk ke /Applications/Xcode.app/Contents/Developer.
Cara Alternatif: Download Manual #
Jika installer otomatis gagal (umumnya di belakang proxy korporat):
- Buka
https://developer.apple.com/download/all/. - Login dengan Apple ID.
- Cari “Command Line Tools for Xcode” versi terbaru.
- Download
.dmgdan jalankan installer.
2. Compiler Clang di macOS #
Apple mengganti GCC dengan Clang sejak sekitar tahun 2012. Binary gcc di macOS sebenarnya adalah alias ke clang—bukan GCC asli.
gcc --version
clang --versionOutput yang Dihasilkan:
Apple clang version 16.0.0 (clang-1600.0.26.6)
Target: arm64-apple-darwin24.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin3. Pasang Homebrew untuk Tool Tambahan #
Homebrew adalah package manager komunitas untuk macOS. Berguna untuk memasang tool yang tidak disertakan Command Line Tools: cmake, valgrind, gdb, dan lainnya.
Pemasangan Homebrew #
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Setelah instalasi, ikuti instruksi terminal untuk menambahkan Homebrew ke PATH. Pada Apple Silicon, Homebrew terpasang di /opt/homebrew.
Pasang Tool C #
brew install cmake gdb valgrindVerifikasi:
cmake --version | head -1
gdb --version | head -1Output yang Dihasilkan:
cmake version 3.30.4
GNU gdb (GDB) 15.24. Verifikasi dengan Hello World #
Buat file hello.c:
/* File: hello.c - Verifikasi toolchain C di macOS */
#include <stdio.h>
int main(void) {
printf("Toolchain macOS siap\n");
return 0;
}Compile dan jalankan:
clang -std=c11 -Wall -Wextra -o hello hello.c
./helloOutput yang Dihasilkan:
Toolchain macOS siapBila ingin mencoba GCC asli via Homebrew:
gcc-14 -std=c11 -Wall -Wextra -o hello hello.c
./hello5. Universal Binary dan Arsitektur #
Pada Apple Silicon (M1/M2/M3/M4), compiler Clang default menghasilkan binary arm64. Untuk menghasilkan binary Intel (x86_64) atau universal (kedua arsitektur), tambahkan flag arch.
# Binary arm64 saja (default di M-series)
clang -arch arm64 -o hello_arm hello.c
# Binary x86_64 (berguna bila perlu jalan di Intel Mac lama)
clang -arch x86_64 -o hello_x86 hello.c
# Universal binary (kedua arsitektur dalam satu file)
clang -arch arm64 -arch x86_64 -o hello_universal hello.cPeriksa arsitektur binary yang dihasilkan:
file hello_universalOutput yang Dihasilkan:
hello_universal: Mach-O 2-tier universal binary (2 architectures)lipo -info hello_universalOutput yang Dihasilkan:
Architectures in the fat file: hello_universal are: arm64 x86_646. Path SDK macOS #
Header sistem macOS (Carbon, Foundation, dll.) berada di dalam SDK yang lokasinya berbeda per versi macOS. Untuk memeriksa path SDK aktif:
xcrun --show-sdk-pathOutput yang Dihasilkan (contoh macOS 15 Sequoia):
/Library/Developer/CommandLineTools/SDKs/MacOSX15.2.sdkUntuk compile kode yang memakai framework Apple (mis. CoreFoundation):
clang -std=c11 -framework CoreFoundation -o app app.c7. Tabel Konversi gdb → lldb #
| Operasi | gdb | lldb |
|---|---|---|
| Mulai debugging | gdb ./app | lldb ./app |
| Set breakpoint | break main | b main |
| Run | run | r |
| Step over | next | n |
| Step into | step | s |
| Continue | continue | c |
| Print variabel | print x | p x |
| Backtrace | bt | bt |
| Info locals | info locals | frame variable |
| Quit | quit | quit |
8. Troubleshooting #
Error: xcode-select: error: command line tools are already installed #
Tools sudah terpasang. Untuk reinstall:
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --installError: clang: error: invalid version number in '-target ...-macosx14.0' #
SDK macOS tidak cocok dengan Command Line Tools versi terpasang. Update Command Line Tools:
softwareupdate --list
sudo softwareupdate --install "Command Line Tools for Xcode-16.2"gdb tidak bisa attach ke proses: Operation not permitted #
macOS SIP membatasi debugger. Bila kita harus memakai gdb, ada dua opsi:
- Gunakan
lldb(tidak perlu konfigurasi tambahan). - Sign
gdbdengan certificate self-signed dan tambahkan ke trusted list. Panduan resmi:https://sourceware.org/gdb/wiki/PermissionsDarwin.
Header pthread.h tidak ditemukan #
Sertakan flag -pthread saat link (sama seperti GCC di Linux):
clang -std=c11 -Wall -Wextra -pthread -o app app.c