OS: PRAKTIKUM — Cross-Platform App Build: Difference between revisions
From OnnoCenterWiki
Jump to navigationJump to search
Created page with " PRAKTIKUM 10 — Cross-Platform App Build One Source Code, Multiple Operating Systems Tujuan Praktikum Praktikum ini bertujuan membuktikan secara nyata bahwa: Perbedaan sist..." |
No edit summary |
||
| Line 1: | Line 1: | ||
==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=== | |||
Konteks Akademik & Konsep Inti | |||
Posisi Praktikum dalam Alur Sistem Operasi | |||
Mengacu pada outline Sistem Operasi, 2026, praktikum ini berada setelah: | Mengacu pada outline Sistem Operasi, 2026, praktikum ini berada setelah: | ||
Build kernel Linux | * Build kernel Linux | ||
Build OpenWRT x86 | * Build OpenWRT x86 | ||
Build Android x86 | * Build Android x86 | ||
Build aplikasi open source (BAB 15) | * Build aplikasi open source (BAB 15) | ||
Artinya, mahasiswa kini: | Artinya, mahasiswa kini: | ||
Tidak hanya membangun OS | * Tidak hanya membangun OS | ||
Tetapi memanfaatkan OS sebagai platform eksekusi aplikasi lintas sistem | * Tetapi memanfaatkan OS sebagai platform eksekusi aplikasi lintas sistem | ||
Mindset kunci: | Mindset kunci: | ||
Mahasiswa berpindah dari OS builder menjadi system integrator. | Mahasiswa berpindah dari OS builder menjadi system integrator. | ||
Konsep Dasar Cross-Platform App Build | |||
==Konsep Dasar Cross-Platform App Build== | |||
Satu source code dapat menghasilkan binary berbeda, tergantung: | Satu source code dapat menghasilkan binary berbeda, tergantung: | ||
Arsitektur CPU | * Arsitektur CPU | ||
libc yang digunakan | * libc yang digunakan | ||
ABI (Application Binary Interface) | * ABI (Application Binary Interface) | ||
Toolchain | * Toolchain | ||
{| class="wikitable" style="margin:auto" | |||
! Platform !! Compiler !! libc | |||
|- | |||
| Ubuntu 24.04 || gcc || glibc | |||
|- | |||
| OpenWRT || target-gcc || musl | |||
|- | |||
| Android || clang (NDK) || bionic | |||
|} | |||
Kesimpulan akademik: | Kesimpulan akademik: | ||
Kernel Linux sama, user space menentukan kompatibilitas aplikasi. | Kernel Linux sama, user space menentukan kompatibilitas aplikasi. | ||
Compile CLI Tool di Ubuntu 24.04 | ==Compile CLI Tool di Ubuntu 24.04== | ||
Tujuan | ===Tujuan=== | ||
Membangun CLI tool native Linux sebagai baseline sebelum masuk ke cross-compile. | Membangun CLI tool native Linux sebagai baseline sebelum masuk ke cross-compile. | ||
Source Code CLI Tool (C) | |||
===Source Code CLI Tool (C)=== | |||
<pre><nowiki> | |||
// hello-cli.c | // hello-cli.c | ||
#include <stdio.h> | #include <stdio.h> | ||
| Line 60: | Line 57: | ||
return 0; | return 0; | ||
} | } | ||
<\nowiki><\pre> | |||
sudo apt update | ===Langkah Compile di Ubuntu=== | ||
sudo apt install -y build-essential | sudo apt update | ||
gcc hello-cli.c -o hello-cli | sudo apt install -y build-essential | ||
gcc hello-cli.c -o hello-cli | |||
Jalankan: | Jalankan: | ||
./hello-cli | ./hello-cli | ||
Observasi OS: | Observasi OS: | ||
Binary ELF dieksekusi oleh kernel Linux | * Binary ELF dieksekusi oleh kernel Linux | ||
printf() → system call → kernel | * printf() → system call → kernel | ||
Ini adalah user space murni | Ini adalah user space murni | ||
Analisis Akademik Singkat | Analisis Akademik Singkat | ||
Gunakan: | Gunakan: | ||
Revision as of 04:23, 15 February 2026
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)
<nowiki>
// hello-cli.c
#include <stdio.h>
int main() {
printf("Hello from Ubuntu CLI tool!\n");
return 0;
}
<\nowiki><\pre>
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.
Pranala Menarik
* Sistem operasi