################################################################################################################ # # 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