52 lines
2.5 KiB
Plaintext

################################################################################################################
#
# STATICNA KNJIZNICA
################################################################################################################
$ gcc -c libprva.c -o libprva.o
$ ar rcs libprva.a libprva.o
r - Insert the files member into archive (with replacement)
c - Create the archive. The specified archive is always created if it did not exist, when you request an update
s - Write an object-file index into the archive, or update an existing one
$ gcc implicitna.c -o staticna libprva.a
################################################################################################################
#
# DINAMICNA KNJIZNICA
################################################################################################################
$ gcc -c -fPIC libprva.c
$ ld -shared -soname libprva.so.1 -o libprva.so.1.0 libprva.o
$ ldconfig -v -n .
$ ln -sf libprva.so.1 libprva.so
################################################################################################################
#
# DINAMICNA KNJIZNICA IMPLICITNO POVEZOVANJE
################################################################################################################
$ gcc implicitna.c -o implicitna -L. -lprva
#Ker uporabljamo dinamične knjižnice moramo program prevesti z dodatnimi zastavicami. Uporabiti moramo zastavico -L, s katero povemo, kje naj povezovalnik išče knjižnice in zastavico -l s katero vključimo knjižnico v program.
$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
#Preden lahko program zaženemo mu moramo na nek način sporočiti, kje lahko najde dinamično knjižnico. Ponavadi se vse knjižnice nahajajo v mapi /usr/lib, /usr/local/lib oz mapah, navedenih v datoteki /etc/ld.so.conf. Knjižnice se iščejo tudi v poteh navedenih v spremenljivki LD_LIBRARY_PATH. V našem primeru bomo knjižnico imeli kar v trenutni mapi, ki jo bomo dodali v spremenljivko z ukazom:
$ ./implicitna # Sedaj lahko zaženemo program.
$ strip --strip-unneeded implicitna
################################################################################################################
#
# DINAMICNA KNJIZNICA EXPLICITNO POVEZOVANJE
################################################################################################################
$ gcc eksplicitno.c -o eksplicitna -ldl
# Da lahko prevedemo program, moramo zraven vključiti še knjižnico libdl. Pri gcc uporabimo torej še zastavico -ldl.
$ strip --strip-unneeded eksplicitna