Staticke linkovani
Jan Otte
jotte na suse.cz
Středa Březen 7 14:53:46 CET 2007
> 1)
> pri statickem linkovani programu vyuzivajicim nektere funkce glibc
> (gethostbyname) vypisuje linker varovani, ze je pro beh programu stejne
> potreba dynamicka knihovna spravne verze. Podle me se tim stira hlavni
> vyhoda statickeho linkovani tj. binarka nezavisla na knihovnach
> konkretni distribuce. Nebo to ma nejaky jiny hlubsi vyznam?
> Je mozne slinkovat aplikci "opravdu staticky" s proti soucasnemu glibc?
Priste pripojte rovnou ten warning. Neni to neco takoveho? :
--- cut here ---
> gcc -Wall -static -o testme test2.c
/tmp/cc4NneWu.o: In function `main':
test2.c:(.text+0x41): warning: Using 'gethostbyname' in statically
linked applications requires at runtime the shared libraries from the
glibc version used for linking
--- cut here ---
Staticky jiste linkovat muzete, ale jde o to, ze nektere veci mohou byt
v zavislosti na jadre/HW za behu trochu jinak (ze by treba zarovnani dat
v nekterych specifickych datovych strukturach lezoucich z nejakeho
syscallu? -- pokud to nekdo vite presne opravte me). I kdyz uplne v
kontextu toho warning to neni (mluvi o ostatnich dynamickych knihovnach,
ne o syscalls)
Kazdopadne ldd na vysledne binarce:
not a dynamic executable
Pokud se nemylim tak v nekterych OS (byl to myslim Solaris, ale ted nevim
pro ktere verze to plati) je vytvoreni uplne statickych binarek temer
nemozne -- furt vam to tam natvrdo linkuje libc dynamicky. Naproti tomu
v Linuxu vam gcc da jen warning (:-).
Staticky se linkuje vetsinou jen pro embedded aplikace ale tam vite pod
cim to ma bezet (t.j. hw/"os"), takze vas ten warning asi netrapi (navic
pouzijete jinou libc nez glibc :-). A pokud to neni pro embedded tak by
mozna bylo vhodnejsi udelat alespon tu libc dynamicky.
>
> 2)
> K cemu je dobra knihovna libgcc_s?
Tedy ne ze bych to vedel ale v popisu je:
--- cut here ---
GCC support library
Shared version of the support library, a library of internal subroutines
that GCC uses to overcome shortcomings of particular machines, or
special needs for some languages.
--- cut here ---
Takze se da odhadnout ze tam budou mimo jine treba rutiny pro veci ktere
jsou na vetsine masin HW ale na nekterych nejsou a prave tato knihovna
je nahrazuje.
S erudovanymi odhady se louci
Honza
--
I am good at providing confusion. Want some more? Don't hesitate to ask.
Další informace o konferenci Linux