52 lines
2.5 KiB
Plaintext
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
|