--- "Bambang Purnomosidi D. P. (bpdp)" <[EMAIL PROTECTED]>
schrieb: > adwin wrote:
> >
> > tapi masih belum menjawab bagaimana mencari nama library
> tersebut
> > (misal kalo pake math.h kok bisa pake -l m ? dst dst ... atau
> memang
>
> Biasanya lib-library-.a
> library itu yang dicantumkan di -lqt atau -lcups dll
Untuk mendapatkan jawabannya, kita musti tahu mekanisme dan aturan
dalam proses kompilasi dan linking. Singkatnya kan ada dua jenis
library, statis dan dynamic(shared) (sebenarnya 3). Kalau Anda memakai
option -lx , ini bearti Anda akan memakai proses linking yang memakai
library dynamic x, yang biasanya berakhiran .so. Di mana system akan
mencarinya, bisa Anda lihat pakai perintah ldconfig, di sana ada daftar
dynamic library. Kalau Anda pengin tahu apakah sebuah fungsi atau
variabel ada di dalam shared library tersebut, bisa pakai perintah nm.
Program2 ginian ada di paket binutils.
Kalau Anda bertanya, fungsi2 yang dideklarasikan di math.h kok harus
pakai -lm , ya itu seperti bertanya, kok kamu ngasih nama anak kamu
Augustina (misaln,ya si anak ini lahir buan Agustus). Ngasih nama
library ya bebas tapi bisa dipertanggungjawabkan. Walau bebas, tapi ada
aturan2 tertentu yang gunanya untuk memudahkan user dalam pemakaian.
Pada dasarnya, untuk mengatahuinya ya harus lihat manual atau docnya.
Saya ambilkan cuplikan bagaimana aturan memberi nama shared library:
Shared Library
Setiap kali objek file librari dimuatkan ke memori tidak selalu
mempunyai posisi yang sama. Maka posisi simbol di dalam
file libraripun mempunyai alamat yang selalu berubah. Oleh karena itu
untuk mereferensi sebuah simbol, dilakukan pengalamatan berbasis zero,
yaitu pengalamatan yang relatif terhadap posisi awal dari file librari.
Setelah alamat posisi awal dapat ditentukan, maka referensi semua
simbol di file
librari dapat dihitung pada saat waktu eksekusi (runtime).
Pada Program Library HOWTO disebutkan tiga jenis librari, selain
librari statis(static library) dan shared library masih ada dynamic
loaded library.
Dilihat dari arsitektur filenya, tidak ada perbedaan antara shared
library dan dynamic loaded library. Pembedaan ini hanya dipandang dari
sisi
pemrogramnya saja. Pada shared library, proses loading dari objek file
librari terjadi saat program utama dimuatkan ke memori (proses linking
dinamis seperti diuraikan diatas). Sedang pada dynamic loaded library,
proses loading dari file librari dapat berlangsung kapan saja selama
program utama dijalankan. Proses linking ini juga sering disebut dengan
runtime linking. Kita akan menamakan teknik yang memanfaatkan runtime
linking ini dengan nama Dynamic Loading. Sebelum teknik ini dibahas,
ada baiknya kita mengetahui aturan pemberian nama pada sebuah shared
library, walaupun aturan ini tidak sepenuhnya berlaku pada dynamic
loaded library. Penggunaan terminologi shared library untuk selanjutnya
berlaku juga pada dynamic loaded library.
Berbeda dengan jenis librari statis, shared library mempunyai dua jenis
nama, yaitu soname dan real name. Soname terdiri dari awalan lib, nama
dari librari, kata .so diikuti tanda titik(".") dan nomor versi mayor,
seperti contohnya libhello.so.1. Real name adalah nama file librari
sebenarnya yang disusun dari soname ditambah tanda titik ("."), nomor
minor, dan kalau ada diikuti tanda titik(".") dan nomor release,
seperti
contohnya libhello.so.1.1 atau libhello.so.1.1.5. Selain kedua jenis
nama di atas, masih ditambahkan satu jenis nama lagi
yaitu linker name yang sama dengan soname tanpa nomor versi mayor,
seperti contohnya libhello.so. Program yang membutuhkan file
shared library akan melakukan referensi menggunakan jenis nama ini.
Secara umum linker name adalah link ke soname dan soname adalah link ke
real name.
Eko
__________________________________________________________________
Gesendet von Yahoo! Mail - http://mail.yahoo.de
Sie brauchen mehr Speicher f�r Ihre E-Mails? - http://premiummail.yahoo.de
--
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3