You are on page 1of 8

Open Source Programming dengan

Open Source Programming dengan



bahasa C/C++
bahasa C/C++
Muchammad Aiman
islamthink@gmail.com
http://islamthink.wordpress.com
Kali ini kita akan membahas tentang open-
source programming menggunakan bahasa
pemrograman C. Ini tentunya karena Linux
yang open-source sudah banyak menggunakan
C untuk membangun sistemnya. Tentunya jika
kita menggunakan C dalam program open kita,
maka itu akan disupport penuh oleh Linux
(nix! dan team de"elopernya. #ks.
Index
$. #"er"ie%
&. 'embangun #pen-(ource )rogram
*. +uild and run
,. 'embuat )acket
-. )enutup
.. /e0erensi
$. #"er"ie%
Kali ini kita akan masuk ke pembahasan yang rupanya agak penting
bagi kita komunitas Linux-er dan sistem administrator. 1al ini tentunya karena
kadang kita membutuhkan program untuk membantu pekerjaan sehari-hari kita sbg
sistem administrator atau sekedar untuk coba-coba membuat tools kecil untuk
pentest. 2ah, tentunya menggunakan bahasa C karena 3its po%er0ul3.
C di Linux bagai keju dalam roti ta%ar, %e% 4o (angat support satu
dengan yang lain. Lihat saja source linux di 5usr5src5... . (emuanya dibangun
dengan bahasa pemrograman C. 6ah, tentunya kalau kita sudah memahami cara kerja
C di LInux, kita juga bisa menggunakan source-source itu untuk kepentingan kita
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
$
Lisensi Dokumen:
Copyright 200!200" IlmuKomputer.Com
#eluruh dokumen di IlmuKomputer.Com dapat digunakan$ dimodi%ikasi dan dise&arkan
secara &e&as untuk tu'uan &ukan komersial (nonpro%it)$ dengan syarat tidak menghapus
atau meru&ah atri&ut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. *idak diper&olehkan melakukan penulisan ulang$ kecuali mendapatkan i'in
terle&ih dahulu dari IlmuKomputer.Com.
sendiri. 'enggunakan source orang lain untuk memperkaya program buatan kita.
+ayangkan saja, banyaknya program yang dibuat untuk jalan di Linux, seperti
6map, #pen((L, binutils, 7''(, ')layer, dan koleksi program-program yang lain.
(emuanya itu dibuat dengan C. 8engan sources yang sudah ada itu, kita benar-
benar bisa membuat program baru yang lebih unik dan penuh 0ungsionalitas
tergantung keinginan kita.
'isalnya Clama", salah satu anti"irus yang jalan di Linux-like #(. 8i dalamnya
ada banyak sekali library dan sources yang bisa kita gunakan ulang pada program-
program kita. (eperti source untuk compressing 0ile5direktori dan exstraksi.
(ources untuk meng-inspeksi berbagai tipe 0ile seperti )89, :7:, C1', 1T'L, dan
lainnya. Tentunya semua itu bisa dengan lebih mudah kita lakukan jika kita
paham konsep dasa #pen(ource )rogramming, sekarang dengan Linux.
&. :lemen #pen-(ource )rogram
)erlu sekali kita mengetahui lingkungan dan elemen-elemen yang akan
sering sekali kita temui pada programming open-source. :lemen-elemen di sini
adalah poin-poin seperti (ource 0iles, Include 0iles, dan 'ake0ile. Ketiganya
memiliki manajemen sendiri yang saling berhubungan sehingga program C kita
terbentuk.
;;;;;;;;;;;;;;;;;;;;;;
; (ource 9iles ;
;;;;;;;;;;;;;;;;;;;;;;
; Include 9iles ;
;;;;;;;;;;;;;;;;;;;;;;
; 'ake0ile ;
;;;;;;;;;;;;;;;;;;;;;;
&.$ (ource 9iles dan Include 9iles
(ource program adalah 0ile-0ile sumber dimana kita menuliskan program kita di
dalamnya. )erlu diketahui, (ource 9ile ((9! tidak harus ditulis semua pada
satu 0ile. 6ah, inilah yang disebut me-manage source 0ile. 8engan memanage ini
lah kita bisa membuat program yang layak disebut sebagai opensource. Karena
orang lain yang membaca sourcenya dapat dengan mudah memahami jalannya program,
dan memodi0ikasinya. <ntuk contoh arsitektur source 0ile yang lumayan baik,
lihat contoh di ba%ah.
5 )rogram =irus (canner 5
=(can5
---------------------------
include5
"scan-con0.h
tipe0ile.c
tipe0ile.h
options.c
options.h
readdb.c
readdb.h
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
&
scan.c
scan.h
---------------------------
"scan.c
'ake0ile
(ekilas melihat arsitektur di atas, terlihat sederhana. 'enyederhanakan masalah
akan mempermudah menyusun logika. +egitu katanya. )ada susunan di atas, kita
mempunya 0ile source utama (main! yaitu "scan.c. Kemudian, "scan.c ini sangat
tergantung (terikat! dengan 0ile-0ile lain yang dibuat pada direktori include.
9ungsi-0ungsi yang dijalankan oleh "scan.c telah dideklarasikan dan dide0inisikan
pada 0ile-0ile yang ada pada direktori include, baik 0ile .c maupun 0ile .h.
>pa yang perlu diperhatikan dengan 0ile .c dan .h di dalam include directory.
Lihat schema di ba%ah 4
include?0ile.h ----@ menuliskan hanya prototipe-nya saja
----@ prototipe ; Atipe@ nama?0ungsi(arguments!B
----@ (;deklarasi!
include?0ile.c ----@ menulis kembali prototipe 0ungsi dan
kode lengkap pembentuknya
----@ (;de0inisi!
<ah, belum ngantuk kanC 9ile .h hanya berisi deklarasi 0ungsi dan macro de0ine
yang dibutuhkan. Lihat contoh di ba%ah untuk 0ile scan.h dan scan.h .
5 9ile scan.h akan berisi macro de0ine dan nama?0ungsi(argumen! saja 5
Dinclude E"scan-con0.hE
Dde0ine /:C</(I=:?8I/:CT#/2 $FF
Dde0ine 9IL:T2):?#6: Fx$
Dde0ine 9IL:T2):?TG# Fx&
Dde0ine 9IL:T2):?T1/:: Fx*
Dde0ine 9IL:T2):?H>+<6H>6 Fx$ I Fx& I Fx*
static int scandesc(int deskriptor, const char opsi!B
int scan0ile(const char nama0ile, const char opsi!B
int scandir(const char namadir, int recursi"e, const char opsi!B
5 (elesai sudah untuk 0ile scan.h 5
5 9ile scan.c akan berisi program lengkap dari 0ungsi-0ungsi yang 5
5 sudah dideklarasikan sebelumnya, yaitu pada scan.h 5
Dinclude Astdio.h@
Dinclude Astdlib.h@
Dinclude Atime.h@
Dinclude Adirent.h@
Dinclude Etipe0ile.hE
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
*
Dinclude Eoptions.hE
55 masuk ke 0ungsi-0ungsinya ya...
static int scandesc(int deskriptor, const char opsi!
J
5 0ile ini akan men-scan deskriptor dari
0ile yang sudah dibuka sebelumnya
8eskriptor biasanya bertipe integer, biasa
dikasih nama desc, 0d, sock0d, dll 5
int i;F
%hile (Ceo0(deskriptor!! J
cari?"irus(deskriptor!B
K
5 Contoh scandesc selesai 5
K
int scan0ile(const char nama0ile, const char opsi!
J
int descB
desc ; open(nama0ile, #?/8#6L2!B
i0(scandesc(desc, 9IL:T2):?H>+<6H>6!! J
print0(E>da "irus pada LsMnE, nama0ile!B
return (-*!B 55kenapa -* N bebas, bungC
K
return FB
K
int scandir(const char namadir, int recursi"e, const char opsi!
J
struct dirent dirB
dir ; opendir(E5etcE!B
%hile(readdir(dir!! J
i0( scan0ile(dir.0?name, opsi! ;; -*! J
print0(E8irektori ga amanMnE!B
return (--!B
K
K
return FB
K
5 6ah, selesai untuk scan.c 5
Lihat pada dua 0ile scan.h dan scan.c di atas. +agaimana hubungan
antara keduanya. Coba dilihat-lihat dulu beberapa kali. 'aka anda
bisa mengetahui apa bedanya sekarang. 9ile .c berisi 0ungsi lengkap
yang kita inginkan untuk melakukan tugas-tugas yang diinginkan.
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
,
)erlu diketahui, sebenarnya menulis program tanpa membuat 0ile .h
boleh-boleh saja. 8an program pun masih bisa di-compile dan di-run.
Tetapi kayaknya kurang asyik dan menyalahi standar open-source C
programming Bp 'asukkan saja semuannya ke 0ile .c kemudian compile,
kompilasi pun selesai tanpa error. Tapi 0ile ini akan jadi sangat
panjang dan susah untuk didebug. Kecuali memang program kita sangat
sangat sederhana atau kecilC
>pa isi main 0ile .c , yang mana di atas kita beri nama "scan.c N
9ile "scan.c adalah 0ile utama, program yang akan kita jalankan
setelah selesai di-compile. Kita akan mengkompile 0ile "scan.c
dan menghasilkan 0ile program executable "scan. (ecara manual ini
bisa dilakukan dengan menjalankan perintah seperti di ba%ah 4
gcc -o "scan "scan.c -Iinclude5
Kurang lebih begitu. Coba saja, pasti errorC Karena memang source
kita di atas tidak lengkap dan hanya contoh saja. Tapi jika program
kita lengkap, baris perintah di atas Insya >lloh berjalan normal-
normal saja. Tambahan -IAdirektori@ akan memberi in0ormasi ke
compiler gcc untuk mencari 0ile-0ile include pada direktori include5
. (edangkan -o akan memberikan keluaran program setelah dikompile,
yaitu "scan. +ebas kok, "scan bisa diganti dengan apapun, yang harus
benar adalah 0ile sourcenya, yaitu "scan.c
&.& 'ake0ile
'ake0ile adalah 0ile bantuan untuk melakukan instalasi program kita.
Instalasi untuk source packet kita terdiri dari 4
- Compile 4 meng-compile 0ile source
- Copy (install! 4 meng-copy 0ile program ke direktori path Linux
(5usr5local5bin!
- /emo"e (uninstall! 4 meng-uninstall 5 menghapus 0ile program dari direktori
path
- Clean 4 membersihkan 0ile-0ile object dari source direktori
- >ll (optional! 4 melakukan compile, copy, dan clean pada satu perintah
make

6ah, kita akan membahas elemen-elemen yang berhubungan dengan
'ake0ile. 'ake0ile sudah digunakan oleh <nix dan Linux sejak lama
untuk membantu instalasi program pada sistemnya. Karena program
buatan kita adalah berbasis source , bukan binary, maka harus
ada tahapan bernama Compile atau kompilasi. Tahap ini sama dengan
baris perintah yang sudah kita tulis di atas 4
gcc -o nama?program nama?program.c -Iinclude
Tidak harus seperti di atas, tetapi sepertinya itu bentuk paling
sederhana. +isa saja ditambah opsi seperti untuk load library
dengan opsi -lAnama?library@. +aris kompilasi ini tentunya akan
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
-
kita masukkan, bersama baris-baris yang lainnya di dalam 'ake0ile.
(ebenarnya untuk membuat 'ake0ile sudah ada tool-tool bantuannya. Tetapi
agar lebih memahami konsep 'ake0ile, lebih baik kita menuliskannya sendiri
dari a%al. Tool yang biasa digunakan untuk membuat 'ake0ile di Linux adalah
automake.
8i ba%ah ini adalah contoh 'ake0ile berhubungan dengan program =(can
buatan kita di atas yang ditulis menggunakan editor biasa, misalkan "im, emacs,
atau editor lainnya.
@@@@@@@@@@@@@@ contoh 'ake0ile I baris ini jangan ditulis lho AAAA
"scan4 "scan.c tipe0ile.o options.o readdb.o scan.o
AT>+@gcc -o "scan "scan.c tipe0ile.o options.o readdb.o scan.o
tipe0ile.o4
AT>+@gcc -c include5tipe0ile.c
options.o4
AT>+@gcc -c include5options.c
readdb.o4
AT>+@gcc -c include5readdb.c
scan.o4
AT>+@gcc -c include5scan.c
install4
AT>+@cp "scan 5usr5local5bin
uninstall4
AT>+@rm 5usr5local5bin5"scan
clean4
AT>+@rm .o include5.o
all4
AT>+@make install
AT>+@make clean
@@@@@@@@@@@@@@@@ selesai sudah 'ake0ile kita AAAAAAAAAAAAAAAAAAAAAAA
(imbol AT>+@ bukan ditulis seperti adanya, melainkan adalah tabulasi
yang ada di keyboard kita, di atas CapsLock. Oika baris tidak diberi
AT>+@, maka proses make akan errorC
(impan 0ile di atas dengan nama 'ake0ile pada direktori utama dimana
terdapat main 0ile.
*. +uild and /un
Cara menggunakan 0ile 'ake0ile adalah dengan memanggil perintah 3make3 pada
console (command prompt! dari direktori dimana padanya terdapat 0ile 'ake0ile.
)ada kasus kita, kita memanggil 3make3 dari direktori =(can.
Oika kita sudah membuat sourcenya dengan benar dan disimpan pada
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
.
direktori utama =(can dan include juga 'ake0ile-nya, maka program
open-source kita sudah selesai. <ntuk melakukan installasi seperti di ba%ah4
D make
D make install
D (tidak harusC! make clean
atau --------
D make all
Oika kita akan membuat paket program kita, gunakan tar dan bPip&
untuk mengkompress menjadi satu 0ile saja. Oika dibutuhkan, tinggal
diekstrak lagi oleh pengguna.
,. 'embuat )acket
(etelah kita selesai membuat source dan 'ake0ile dan mencoba menginstallnya
pada sistem kita sendiri, maka sekarang saatnya membuatnya satu paket sendiri.
Tujuannya tentu agar bisa diupload dan digunakan oleh siapapun yang mem-
butuhkannya. Ikuti baris-baris berikut 4
(Oika anda sedang berada di direktori =(can5
D cd .. (ini untuk keluar dari direktori utama!
D ls
=(can
D tar c"0 "scan-F.$.tar =(can
D bPip& "scan-F.$.tar
D ls
=(can "scan-F.$.tar.bP&
6ah, kita sudah memiliki paket lengkap program kita disimpan pada
0ile bernama vscan-0.1.tar.bz.
-. )enutup
Ternyata membuat program open-source tidak sesulit yang kita bayangkan.
2ang perlu diperhatikan adalah pertama, logika atau konsep membuat program
yang akan kita terapkan selama membuat program. 8itambah banyak latihan,
maka insya >lloh kita akan lebih mudah dan terbiasa membuat tool dan program-
program pada sistem Linux dan Linux-like buatan kita sendiri.
Insya >lloh pada kesempatan lain kita akan belajar membuat program open-source
secara li"e, dengan menggunakan library-library ba%aan dan library milik tools
lain pada program kita.
.. /e0erensi
(childt, 1erbert. T1: >66#T>T:8 >6(I C (T>68>/8. 'cHra%-1ill. $QQF
Hkioulekas, :le0therios. 8e"eloping (o0t%are %ith H6<,.<ni"ersity o0 Gashington. $QQQ
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
R
!iogra"i Penu#is
Muchammad Aiman. )enulis adalah seorang mahasis%a tingkat
akhir pada )erguruan Tinggi Institut Teknologi Telkom Ourusan
Teknik In0ormatika. Tengah menyusun tugas akhir tentang
keamanan komputer dengan judul )erancangan dan Implementasi
>nti"irus <pdate dengan <ni"ersal )acket <pdate. 8i sela-sela
kesibukan mengerjakan Tugas >khir masih berusaha
menyempatkan menulis artikel-artikel dalam bidang sistem
operasi dan keamanan sistem komputer. +rtikel!artikel yang
lainnya dapat didapat gratis di http://islamthink.wordpress.com.
Komunitas eLearning IlmuKomputer.Com
Copyright 200!200" IlmuKomputer.Com
S

You might also like