Membuat library archive sangat mudah. Misalnya kita punya file hello.c
yang isinya:
/* hello.c */
#include <stdio.h>
void print_hello(void)
{
puts("Hello world");
};
untuk membuat libhello.a
dari file hello.c
itu, perintahnya adalah:
$ gcc -c hello.c
$ ar rcs libhello.a hello.o
Perintah yang digunakan untuk membuat library archive adalah ar
(archiver). Option r
artinya add/replace objek, c
artinya create archive kalau belum ada, s
artinya membuat/mengupdate index objek dalam archive. Informasi lebih lanjut dapat dibaca di 'man ar'
.
Jika kita lihat isi file libhello.a
:
$ nm libhello.a
hello.o:
00000000 t gcc2_compiled.
00000000 T print_hello
U puts
terlihat bahwa fungsi print_hello()
kita terdapat di situ.
Pada bagian dynamic linking telah dijelaskan panjang lebar tentang shared library. Jika Anda belum membacanya, silakan dibaca dulu.
Untuk membuat shared library libhello.so.1.0.0
dari file hello.c
:
$ gcc -o libhello.so.1.0.0 -shared hello.c \
-Wl,-soname=/usr/local/lib/libhello.so.1
option-option yang kita berikan di atas adalah:
'-o libhello.so.1.0.0'
untuk mengatur nama file output'-shared'
membuat shared library'-Wl,'
mem-pass option berikutnya kepada linker (ld
)'-soname=/usr/local/lib/libhello.so.1'
adalah option yang dipass kepada linker (ld
), untuk mengeset soname
dari library ini.Pada bagian
dynamic linking telah dijelaskan sedikit tentang soname
dan penomoran versi library. Jika Anda belum membacanya, silakan dibaca dulu.
Untuk me-link program kita dengan libhello.so.1.0.0
ini, pertama kita harus membuat symbolic link libhello.so
dulu:
$ ln libhello.so.1.0.0 libhello.so
Baru kemudian kita link dengan:
$ gcc -o hello main.o -L. -lhello