Saya masih sering melihat programmer C dan juga administrator yang bingung dengan konsep shared library. Shared library adalah file berisi kode yang bisa diload saat program dieksekusi (runtime). Karena diload pada runtime, maka sebuah shared library bisa digunakan oleh lebih dari satu program.
Penjelasan mengenai static dan shared library biasanya membingungkan, jadi di posting ini saya akan menjelaskan dengan banyak contoh. Sebenarnya hampir semua contoh di tulisan ini berlaku juga untuk lingkungan POSIX lain selain Linux, tapi saya hanya mencoba kode ini di Linux 64 bit dengan compiler gcc. Di balik layar, program gcc
sebenarnya akan memanggil berbagai program lain (preprocessor, assembler, linker) tergantung pada parameter yang kita berikan tapi agar penjelasannya sederhana, saya akan memakai gcc
saja dan tidak akan menjelaskan apa yang terjadi di balik layar.
Kode monolitik
Kita mulai dari kode yang sangat sederhana seperti ini:
/*file: main.c */ #include <stdio.h> double operation(double a, double b) { printf("Plus operation\n"); return a+b; } int main(int argc, char *argv[]) { double a = 5; double b = 3; printf("Result of operation (%.2f, %.2f) is: %.2f\n", a, b, operation(a, b)); return 0; }
Karena semua sudah ada di satu file, maka ini bisa dikompilasi dan jalankan langsung.
gcc main.c -o main
Memecah source code
Di sini ada satu fungsi bernama operation
yang hanya melakukan operasi sangat sederhana. Anggap saja fungsi ini rumit dan penting dan ingin kita pisahan agar bisa dipakai oleh orang lain. Sekarang operation
saya pindahkan ke operation.c