Modul Praktikum Sistem Operasi PERTEMUAN KE-VI
Kompilasi Paket Perangkat Lunak Pada Sistem Operasi Linux A) TUJUAN 1) Melakukan kompilasi kode 2) Melakukan instalasi hasil executable 3) Mengatur path direktori instalasi B) DASAR TEORI Bahasa tingkat tinggi harus diubah ke dalam bentuk yang dikenali oleh komputer. Sebagai contoh, kode sumber bahasa C di ubah ke bahasa tingkat yang lebih rendah yang biasa disebut bahasa assembly. Kode assembly yang dibuat tersebut kemudian diubah menjadi kode object yang berupa bagian-bagian yang dapat dipahami langsung oleh komputer. Langkah terakhir dalam mengkompilasi program adalah melakukan penyambungan (linking) kode objek ke pustaka kode berisi fungsi-fungsi bawaan tertentu. Langkah terakhir ini menghasilkan program yang dapat dieksekusi (executable program). Untuk melakukan langkah-langkah tersebut secara manual sangatlah rumit dan diluar kemampuan pengguna pada umumnya. Oleh karena itu sejumlah peralatan (utilities
and tools) telah dibuat bagi programmer ataupun end-user agar lebih mudah melalui tahapan ini. Make dan Makefile Perintah make digunakan programmer untuk mengelola program yang besar atau sejumlah kelompok program. Perintah tersebut sangat membantu pengembangan program-program besar dengan mengawasi bagian-bagian dari keseluruhan program yang mengalami perubahan, make hanya mengkompilasi bagian yang berubah sejak kompilasi terakhir dilakukan.
Modul Praktikum Sistem Operasi PERTEMUAN KE-VI Program make mendapatkan aturan-aturan kompilasi dari file teks bernama
Makefile yang terdapat pada direktori yang sama dengan file sumber. Makefile berisi informasi bagaimana cara mengkompilasi perangkat lunak, misalnya level optimisasi, atau apakah perlu menyertakan info debug dalam file eksekutable. File ini juga berisi informasi tempat menaruh file-file instalasi bagi file binary yang telah dikompilasi (executables), manual page, file data, file pustaka yang dibutuhkan, file konfigurasi, dsb. Beberapa paket masih membutuhkan pengaturan isi file Makefile secara manual untuk menyesuaikan dengan direktori instalasi akhir dan beberapa parameter lainnya. Saat ini kebanyakan paket didistribusikan mengacu pada utility konfigurasi GNU. Configure Karena jumlah varian UNIX terus bermunculan, menyebabkan makin sulit untuk membuat program yang dapat berjalan di semua varian. Pengembang seringkali tidak memiliki akses ke setiap sistem, selain itu karakteristik beberapa sistem berubah seiring perkembangan versinya. Untuk mengatasi masalah tersebut, disepakati penggunaan sistem konfigurasi dan build GNU (GNU configure and build system) yang dapat memudahkan penyusunan program-program yang didistribusikan dalam bentuk kode sumber. Penyusun program (program builder) tidak perlu menginstall perangkat khusus untuk menyusun program tersebut. Skrip shell configure mencoba menerka nilai yang cocok pada berbagai variabel yang tidak tergantung pada sistem tertentu untuk digunakan selama kompilasi. Configure menggunakan nilai tersebut untuk membuat file Makefile di tiap direktori paket. Cara paling sederhana untuk melakukan kompilasi paket adalah sebagai berikut: 1. cd ke direktori yang berisi paket kode sumber 2. Ketikkan ./configure untuk mengkonfigurasi paket terhadap sistem yang kita gunakan. 3. Ketikkan make untuk mengkompilasi paket
Modul Praktikum Sistem Operasi PERTEMUAN KE-VI 4. Kita dapat mengetikkan perintah make check untuk menjalankan self-test yang disediakan oleh paket. Ini opsional. 5. Ketikkan make install untuk melakukan installasi program, file data, dan dokumentasi. 6. Kita dapat mengetikkan make clean untuk membersihkan program binary dan file objek dari direktori kode sumber. Ini juga opsional. Perangkat configure mendukung banyak opsional. Gunakan --help untuk melihat daftar pilihan yang dapat digunakan. Pilihan yang sering digunakan adalah --prefix dan --exec-prefix. Pilihan ini digunakan untuk menunjukkan direktori instalasi. Direktori yang dituliskan bersama --prefix akan menyimpan file-file yang tidak tergantung pada mesin yang digunakan, misalnya: file dokumentasi, file data, dan file konfigurasi. Sedangkan direktori yang dituliskan dengan --exec-prefix, akan menampung file-file yang tergantung pada mesin tertentu yang digunakan, contohnya: executable file. C) PERCOBAAN 1. Kode sumber $ mkdir download $ cd download Tanyakan asisten praktikum lokasi file: units-1.74.tar.gz, kemudian letakkan dalam direktori download $ ls –l 2. Melakukan ekstraksi kode sumber $ gunzip units-1.74.tar.gz $ tar –xvf units-1.74.tar $ ls -l $ cd units-1.74 1# Jelaskan fungsi program gunzip dan tar 2# Jelaskan arti -xvf
Modul Praktikum Sistem Operasi PERTEMUAN KE-VI 3. Melakukan konfigurasi dan membuat Makefile $ less README (silahkan baca isi file tersebut) $ less INSTALL (silahkan pelajari isi file tersebut) Paket yang kita amati menggunakan sistem konfigurasi GNU untuk mengkompilasi kode sumbernya. Kita perlu menentukan direktori instalasi karena secara default akan ditaruh pada area sistem utama yang user-biasa tidak memiliki hak akses menulis (write). Sehingga kita perlu membuat direktori instalasi pada home direktori. $ mkdir ~/units174 Kemudian jalankan configure dengan mengarahkan ke path tersebut: $ ./configure --prefix=$HOME/units174 3# Jelaskan arti “--prefix=$HOME/units174”
Jika configure berjalan lancar, maka akan dibuat file Makefile dengan segala pilihan yang diperlukan. Lihatlah isi Makefile misalnya dengan perintah less, namun jangan mengubah isinya. 4# Jelaskan secara garis besar isi file Makefile
4. Membangun paket Bangunlah (build) paket dengan menggunakan perintah: $ make Setelah itu periksa bahwa kompilasi kita berhasil dengan mengetikkan: $ make check Jika tidak ada masalah, maka lanjutkan dengan menginstall paket $ make install Langkah terakhir ini akan menginstall file ke direktori ~/units174 yang tadi kita buat. 5# Jelaskan perbedaan perintah “make” dengan “make install”
Modul Praktikum Sistem Operasi PERTEMUAN KE-VI 5. Menjalankan program $ cd ~/units174 $ ls –l $ cd bin Jalankan program dengan perintah: $ ./units Cobalah masukkan nilai berikut: You have: 6 feet You want: metres * 1.8288 (jika ini jawaban pada tampilan anda, artinya anda telah berhasil) 6. Stripping kode yang tidak dibutuhkan Beralih ke direktori bin: $ cd ~/units174/bin $ ls –l (catat ukuran file) Kita lihat informasi file dengan perintah: $ file units Units: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped. Untuk membersihkan informasi debug dan baris nomor dari file binary, gunakan perintah: $ strip units $ ls –l (amati ukuran file sekarang) $ file units Units: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped. 6# Berikan kesimpulan anda terkait hasil dari stripping kode yang anda lakukan 7# Tuliskan rangkuman singkat anda mengenai peran “configure”, “Makefile”, dan “make” dalam melakukan kompilasi paket.