OS: Build & Compile Aplikasi Open Source

From OnnoWiki
Jump to navigation Jump to search

BAB 15. Build & Compile Aplikasi Open Source Dari Source Code ke Binary di Berbagai Sistem Operasi Posisi Bab dalam Alur Sistem Operasi Setelah mahasiswa: Menginstal dan mengelola Ubuntu Server 24.04 Meng-compile kernel Linux Membangun OpenWRT x86 Membangun Android x86 dari source maka langkah logis berikutnya adalah membangun aplikasi open source di atas sistem operasi tersebut. Bab ini menegaskan satu prinsip penting: Sistem operasi bukan tujuan akhir — ia adalah platform eksekusi hasil kompilasi. Dengan kata lain, nilai praktis OS baru terasa ketika mahasiswa mampu menghasilkan program yang berjalan native di OS tersebut. Konsep Dasar Build & Compile dalam Perspektif OS Secara akademik, build process adalah jembatan antara: Source code (user space) dan Executable binary (berinteraksi dengan kernel) Tahapan umum: Preprocessing Compilation Linking Execution Setiap tahap berinteraksi langsung atau tidak langsung dengan kernel: Compiler → process scheduling Linker → filesystem & loader Binary → system call ke kernel

Insight OS: Ketika Anda meng-compile aplikasi, Anda sedang melatih kernel menangani workload nyata. Build Aplikasi Open Source di Ubuntu 24.04 Ubuntu sebagai Build Platform Utama Ubuntu 24.04 dipilih sebagai platform build utama karena: Toolchain lengkap (gcc, make, cmake) Library stabil Lingkungan developer-friendly Basis untuk OpenWRT & Android build Ubuntu berfungsi sebagai “factory OS” dalam keseluruhan ekosistem lab.

Contoh Build Aplikasi C Sederhana (Native Linux) Langkah 1 — Buat Source Code // hello.c

  1. include <stdio.h>

int main() {

   printf("Hello, Open Source OS World!\n");
   return 0;

}

Langkah 2 — Compile gcc hello.c -o hello Langkah 3 — Jalankan ./hello Observasi OS: gcc adalah user-space compiler Binary hello dieksekusi kernel via ELF loader printf() memanggil system call ke kernel Build dengan Makefile

CC=gcc CFLAGS=-Wall

all: $(CC) $(CFLAGS) hello.c -o hello

make Makna akademik: Makefile merepresentasikan otomasi build—konsep penting di OS skala besar.

Build Aplikasi Open Source di OpenWRT Filosofi Build di OpenWRT Berbeda dengan Ubuntu, OpenWRT: Resource terbatas Fokus embedded Menggunakan cross-compilation Konsep penting: Aplikasi OpenWRT dibangun di host (Ubuntu), dijalankan di target (OpenWRT). Menggunakan OpenWRT Build System Masuk ke direktori source OpenWRT: cd ~/openwrt Update & install feed: ./scripts/feeds update -a ./scripts/feeds install -a Contoh Package Sederhana OpenWRT Struktur package: package/hello-openwrt/

├── Makefile
└── src/hello.c

Source Code

  1. include <stdio.h>

int main() {

   printf("Hello from OpenWRT!\n");
   return 0;

} Makefile OpenWRT (ringkas) include $(TOPDIR)/rules.mk

PKG_NAME:=hello-openwrt PKG_VERSION:=1.0

include $(INCLUDE_DIR)/package.mk

define Package/hello-openwrt

 SECTION:=utils
 CATEGORY:=Utilities
 TITLE:=Hello OpenWRT

endef

define Build/Compile $(TARGET_CC) $(TARGET_CFLAGS) \ -o $(PKG_BUILD_DIR)/hello \ $(PKG_BUILD_DIR)/hello.c endef

define Package/hello-openwrt/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/usr/bin/ endef

$(eval $(call BuildPackage,hello-openwrt)) Insight OS: Di sini mahasiswa benar-benar berhadapan dengan cross-toolchain dan filesystem target. Build Aplikasi Open Source di Android Android sebagai Platform Build Android bukan Linux desktop biasa: Menggunakan Bionic libc Tidak semua syscall tersedia Build menggunakan Android NDK Contoh Build Native App Android (NDK) Source Code (hello.c)

  1. include <stdio.h>

int main() {

   printf("Hello from Android native app!\n");
   return 0;

} Compile dengan NDK (di Ubuntu) $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \

 --target=x86_64-linux-android21 \
 hello.c -o hello-android

Deploy ke Android x86: adb push hello-android /data/local/tmp/ adb shell chmod +x /data/local/tmp/hello-android adb shell /data/local/tmp/hello-android Observasi penting: Binary Android tetap ELF Linux, tetapi menggunakan runtime & libc berbeda. Konsep Cross-Compiling Definisi Akademik Cross-compiling adalah proses: Membangun aplikasi di satu OS/arsitektur untuk dijalankan di OS/arsitektur lain Contoh: Build di Ubuntu x86_64 Target: OpenWRT (MIPS/ARM) Target: Android x86/ARM

Komponen Cross-Compilation Host → Ubuntu 24.04 Target → OpenWRT / Android Cross-compiler Sysroot Target libc Kesalahan umum mahasiswa: Mengira compile = copy-paste binary. Padahal ABI & libc menentukan segalanya.

Perbandingan Singkat Platform Compiler Libc Ubuntu gcc glibc OpenWRT target-gcc musl Android clang bionic



Insight OS: Kernel boleh sama, user space menentukan kompatibilitas aplikasi. Mini Eksperimen (Integratif & Menantang) Beberapa tantangan opsional: Build aplikasi yang sama di Ubuntu, OpenWRT, dan Android Bandingkan ukuran binary Bandingkan syscall yang tersedia Jalankan strace (Ubuntu) vs keterbatasan Android Mahasiswa akan melihat langsung dampak desain OS terhadap aplikasi. Refleksi Akademik (OBE-Oriented) Setelah bab ini, mahasiswa mampu: Menjelaskan proses build aplikasi dari perspektif OS Membangun aplikasi open source di berbagai OS Memahami cross-compiling secara konseptual & praktis Mengaitkan toolchain dengan kernel & user space Berpikir sebagai system integrator, bukan sekadar programmer Penutup Bab ini menegaskan bahwa: Kekuatan sistem operasi terletak pada kemampuannya menjadi platform build & eksekusi aplikasi. Dengan menyelesaikan bab ini, mahasiswa tidak hanya: Mengerti OS Membangun OS tetapi juga memanfaatkan OS sebagai mesin produksi software lintas platform. Selamat — Anda kini memahami sistem operasi dari kernel hingga aplikasi.


Pranala Menarik