[ LUGOS-PROG ] glibc

Rok Papež rok.papez at kiss.uni-lj.si
Fri Jun 15 09:33:33 CEST 2001


Živjo!

On Friday 15 June 2001 00:46, Rok Krulec wrote:

> Sli je spodnja trditev pravilna ?

Ne.

> Compilanje nima sploh veze z runtime glibc, ki ima koncnico .so in je v
> /lib, ampak ima samo veze s staticnimi, namenjenimi za compilanje, ki so v
> /usr/lib.

Linkaš ali s statično ali z dinamično knjižnico.
Ce linkaš statično tvoj program uporablja samo KPI klice ker
vsebuje vse glibc routine v sebi (tiste, ki jih ne rabi se odstranijo).

Če linkaš dinamično imaš imported simbole, ki jih mora run-time linker
razrešiti (z uporabo ustrezne .so) vedno, ko poženeš tovrstno aplikacijo.

> Kaj ce imam v /lib in /usr/lib enako knjiznjico ena je .a in ena je .so,
> katera se uporablja, ce imam v /etc/ld.so.conf nastavljene /usr/lib in /lib
> ?

.a se ne uporablja... Vkljuci se v program, ko ga prevedes. .so se pa nalozi
vedno, ko poženeš dinamično linkan program.

> Kako dolocim pri compilanju, da se uporablja nonshared namesto shared glibc
> ? gcc -shared ?

gcc -static

> Sem slisal, da nonshared glibc podpira vec funkcij kot
> shared ?

Dvomim.. močno močno.

> Tezava je v tem, da imam pri slackware-current probleme s compilom
> postgresql, ker ne najde atexit funkcije, ki je standardna stdlib funkcija
> in je bila od vedno v libc, a ce kej prav vem, libc-ja ni treba linkat s
> posebnim -l ukazom = se linka ze po defaultu ?

Bah...
vv.c:
-------------------------------------------
#include <stdlib.h>
#include <stdio.h>
 
void lala() {
  printf("atexit!\n");
}
 
int main() {
  atexit(lala);
  return 0;
}
-------------------------------------------
[rok at strader tmp]$ gcc vv.c && ./a.out
atexit!
[rok at strader tmp]$ dir a.out
-rwxrwxr-x    1 rok      rok         21904 Jun 15 09:25 a.out
[rok at strader tmp]$ gcc -static vv.c && ./a.out
atexit!
[rok at strader tmp]$ dir a.out
-rwxrwxr-x    1 rok      rok       1626947 Jun 15 09:26 a.out
[rok at strader tmp]$ uname -a
Linux strader.home 2.4.3 #1 Mon May 7 13:32:20 CEST 2001 i686 unknown
[rok at strader tmp]$ cat /etc/redhat-release
Red Hat Linux release 7.1 (Seawolf)

-- 
best regards,
Rok Papež.



More information about the lugos-prog mailing list