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:

bash
xcode-select --install

Dialog akan muncul menanyakan konfirmasi pemasangan. Klik Install dan tunggu hingga selesai (biasanya 5-10 menit tergantung koneksi).

Verifikasi Pemasangan #

bash
# Cek apakah tools terpasang
xcode-select -p

Output yang Dihasilkan (path mungkin sedikit berbeda tergantung versi macOS):

text
/Library/Developer/CommandLineTools

Bila 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):

  1. Buka https://developer.apple.com/download/all/.
  2. Login dengan Apple ID.
  3. Cari “Command Line Tools for Xcode” versi terbaru.
  4. Download .dmg dan 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.

bash
gcc --version
clang --version

Output yang Dihasilkan:

text
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/bin

3. 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 #

bash
/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 #

bash
brew install cmake gdb valgrind

Verifikasi:

bash
cmake --version | head -1
gdb --version | head -1

Output yang Dihasilkan:

text
cmake version 3.30.4
GNU gdb (GDB) 15.2

4. Verifikasi dengan Hello World #

Buat file hello.c:

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:

bash
clang -std=c11 -Wall -Wextra -o hello hello.c
./hello

Output yang Dihasilkan:

text
Toolchain macOS siap

Bila ingin mencoba GCC asli via Homebrew:

bash
gcc-14 -std=c11 -Wall -Wextra -o hello hello.c
./hello

5. 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.

bash
# 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.c

Periksa arsitektur binary yang dihasilkan:

bash
file hello_universal

Output yang Dihasilkan:

text
hello_universal: Mach-O 2-tier universal binary (2 architectures)
bash
lipo -info hello_universal

Output yang Dihasilkan:

text
Architectures in the fat file: hello_universal are: arm64 x86_64

6. Path SDK macOS #

Header sistem macOS (Carbon, Foundation, dll.) berada di dalam SDK yang lokasinya berbeda per versi macOS. Untuk memeriksa path SDK aktif:

bash
xcrun --show-sdk-path

Output yang Dihasilkan (contoh macOS 15 Sequoia):

text
/Library/Developer/CommandLineTools/SDKs/MacOSX15.2.sdk

Untuk compile kode yang memakai framework Apple (mis. CoreFoundation):

bash
clang -std=c11 -framework CoreFoundation -o app app.c

7. Tabel Konversi gdb → lldb #

Operasigdblldb
Mulai debugginggdb ./applldb ./app
Set breakpointbreak mainb main
Runrunr
Step overnextn
Step intosteps
Continuecontinuec
Print variabelprint xp x
Backtracebtbt
Info localsinfo localsframe variable
Quitquitquit

8. Troubleshooting #

Error: xcode-select: error: command line tools are already installed #

Tools sudah terpasang. Untuk reinstall:

bash
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

Error: clang: error: invalid version number in '-target ...-macosx14.0' #

SDK macOS tidak cocok dengan Command Line Tools versi terpasang. Update Command Line Tools:

bash
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:

  1. Gunakan lldb (tidak perlu konfigurasi tambahan).
  2. Sign gdb dengan 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):

bash
clang -std=c11 -Wall -Wextra -pthread -o app app.c