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.


PRAKTIKUM 10 — Cross-Platform App Build
Setelah praktikum ini, mahasiswa diharapkan mampu:
One Source Code, Multiple Operating Systems
* 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


Tujuan Praktikum
==Konteks Akademik & Konsep Inti==
Praktikum ini bertujuan membuktikan secara nyata bahwa:
===Posisi Praktikum dalam Alur Sistem Operasi===
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:
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
Platform
Compiler
libc
Ubuntu 24.04
gcc
glibc
OpenWRT
target-gcc
musl
Android
clang (NDK)
bionic
 
 
 


{| 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;
}
}
Langkah Compile di Ubuntu
<\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