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