OS: PRAKTIKUM — Cross-Platform App Build
PRAKTIKUM 10 — Cross-Platform App Build One Source Code, Multiple Operating Systems
Tujuan Praktikum Praktikum ini bertujuan membuktikan secara nyata bahwa: Perbedaan sistem operasi bukan pada kernel semata, tetapi pada user space, toolchain, dan runtime. Setelah praktikum ini, mahasiswa diharapkan mampu: Meng-compile CLI tool native di Ubuntu 24.04 Meng-compile package OpenWRT menggunakan cross-toolchain Meng-compile aplikasi Android (APK) dari source Memahami konsep cross-platform dan cross-compilation secara praktis Konteks Akademik & Konsep Inti Posisi Praktikum dalam Alur Sistem Operasi Mengacu pada outline Sistem Operasi, 2026, praktikum ini berada setelah: Build kernel Linux Build OpenWRT x86 Build Android x86 Build aplikasi open source (BAB 15) Artinya, mahasiswa kini: Tidak hanya membangun OS Tetapi memanfaatkan OS sebagai platform eksekusi aplikasi lintas sistem Mindset kunci: Mahasiswa berpindah dari OS builder menjadi system integrator. Konsep Dasar Cross-Platform App Build Satu source code dapat menghasilkan binary berbeda, tergantung: Arsitektur CPU libc yang digunakan ABI (Application Binary Interface) Toolchain Platform Compiler libc Ubuntu 24.04 gcc glibc OpenWRT target-gcc musl Android clang (NDK) bionic
Kesimpulan akademik: Kernel Linux sama, user space menentukan kompatibilitas aplikasi.
Compile CLI Tool di Ubuntu 24.04 Tujuan Membangun CLI tool native Linux sebagai baseline sebelum masuk ke cross-compile. Source Code CLI Tool (C) // hello-cli.c
- include <stdio.h>
int main() {
printf("Hello from Ubuntu CLI tool!\n");
return 0;
} Langkah Compile di Ubuntu
sudo apt update sudo apt install -y build-essential gcc hello-cli.c -o hello-cli
Jalankan: ./hello-cli Observasi OS: Binary ELF dieksekusi oleh kernel Linux printf() → system call → kernel Ini adalah user space murni Analisis Akademik Singkat Gunakan: ldd hello-cli file hello-cli Mahasiswa dapat melihat: Dependency glibc Arsitektur binary Loader ELF
Compile OpenWRT Package (Cross-Compile) Konsep Build di OpenWRT OpenWRT tidak membangun aplikasi langsung di target, melainkan: Build di Ubuntu (host) Jalan di OpenWRT (target) Inilah cross-compilation yang sesungguhnya. Struktur Package OpenWRT package/hello-cross/
├── Makefile
└── src/
└── hello-openwrt.c
Source Code (Sama Secara Logika)
- include <stdio.h>
int main() {
printf("Hello from OpenWRT!\n");
return 0;
} Makefile OpenWRT include $(TOPDIR)/rules.mk
PKG_NAME:=hello-cross PKG_VERSION:=1.0
include $(INCLUDE_DIR)/package.mk
define Package/hello-cross
SECTION:=utils CATEGORY:=Utilities TITLE:=Hello Cross Platform
endef
define Build/Compile $(TARGET_CC) $(TARGET_CFLAGS) \ -o $(PKG_BUILD_DIR)/hello \ $(PKG_BUILD_DIR)/hello-openwrt.c endef
define Package/hello-cross/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/usr/bin/ endef
$(eval $(call BuildPackage,hello-cross)) Build Package
make package/hello-cross/compile V=s Hasil .ipk dapat di-install di OpenWRT: opkg install hello-cross.ipk hello
Insight OS: Binary OpenWRT tidak bisa dijalankan di Ubuntu, walau kernel sama. Compile Android App (APK) Konsep Build Aplikasi Android Android: Tidak menjalankan binary Linux biasa sebagai app Menggunakan APK Runtime: ART Namun, source tetap open source, dan build dilakukan di Ubuntu. Contoh Aplikasi Android Sederhana Struktur minimal: HelloAndroid/
├── AndroidManifest.xml
├── build.gradle
└── app/
└── src/main/java/MainActivity.java
Contoh MainActivity.java package com.example.helloandroid;
import android.app.Activity; import android.os.Bundle; import android.widget.TextView;
public class MainActivity extends Activity {
protected void onCreate(Bundle b) {
super.onCreate(b);
TextView tv = new TextView(this);
tv.setText("Hello from Android APK!");
setContentView(tv);
}
} Build APK di Ubuntu (Gradle) ./gradlew assembleDebug APK akan berada di: app/build/outputs/apk/debug/ Install ke Android x86
adb install app-debug.apk Observasi OS: Aplikasi berjalan sebagai process Android Terisolasi UID Tidak bisa akses kernel langsung Perbandingan & Analisis Cross-Platform
Aspek Ubuntu OpenWRT Android Output ELF binary ELF binary APK libc glibc musl bionic Toolchain gcc target-gcc clang Runtime Linux Linux ART Target Server/Desktop Embedded Mobile/VM
Insight penting: Cross-platform bukan berarti satu binary untuk semua, tetapi satu source untuk banyak build. Mini Challenge (Fun & Menantang) Beberapa tantangan opsional: Ubah teks output → build ulang di 3 OS Bandingkan ukuran binary Jalankan strace di Ubuntu vs Android Amati syscall yang gagal di Android Tantangan ini melatih analisis OS behavior, bukan sekadar compile. Refleksi Akademik (OBE-Oriented) Setelah praktikum ini, mahasiswa mampu: ✅ Meng-compile aplikasi lintas OS ✅ Memahami toolchain dan ABI ✅ Mengaitkan user space dengan kernel ✅ Berpikir sebagai cross-platform system engineer Penutup Praktikum ini menegaskan satu hal penting: Sistem operasi adalah fondasi eksekusi, bukan sekadar lingkungan belajar. Mahasiswa kini: Tidak hanya membangun OS Tidak hanya membangun aplikasi Tetapi menghubungkan keduanya secara lintas platform Selamat — Anda telah menembus batas antar sistem operasi.