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)
#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
Error creating thumbnail: File missing
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.