Re: libc und libc_r in einem Programm

From: Marc Santhoff <M.Santhoff(at)t-online.de>
Date: Mon, 16 Jul 2007 12:20:01 +0200

Am Montag, den 16.07.2007, 11:11 +0200 schrieb Bernd Walter:
> On Mon, Jul 16, 2007 at 10:44:13AM +0200, Marc Santhoff wrote:
> > Hallo,
> >
> > ich frage mich warum in einem Programm, daß mit "threading" übersetzt
> > und gelinkt ist, beide Bibliotheken angesprochen werden, libs.so.x und
> > libc_r.so.x:
>
> Du meinst libc.so.x?

Klar, blöder Vertipper.

> > $ ldd /usr/local/bin/h5dump
> > /usr/local/bin/h5dump:
> > libhdf5.so.0 => /usr/local/lib/libhdf5.so.0 (0x28089000)
> > libz.so.2 => /usr/lib/libz.so.2 (0x2818c000)
> > libm.so.2 => /usr/lib/libm.so.2 (0x28199000)
> > libc_r.so.4 => /usr/lib/libc_r.so.4 (0x281b4000)
> > libc.so.4 => /usr/lib/libc.so.4 (0x2826b000)
> >
> > Bis auf die Threading-spezifischen funktionen ist sind doch die Inhalte,
> > also die aus Objektdateien eingebauten Funktionen, die selben. Nur
> > diejenigen in libc_r sollten reentrant sein, die anderen nicht(?).
>
> Die jeweiligen Symbole in der libc sind als "weak" deklariert und
> werden von der libc_r oder vergleichbaren überschrieben.
> Die nicht Thread spezifischen Funktionen der libc sind nicht in der
> libc_r enthalten.

Aha, das macht Sinn. Die c_r-Symbole haben Vorfahrt. ;)

> > Muß das so sein?
>
> Ja.
> Die libc_r ist kein Ersatz für die libc, sondern eine Ergänzung.
>
> > Oder kann es dadurch Konflikte geben?
>
> Nein, weil die libc durch die weak Defintion weniger Prio beim linken
> hat.
> Echte Kollisionen, also beide Libs haben die gleiche Funktione ohne
> weak-deklaration, würde der ld.so melden.

Sehr gut, also kein echter Fehler und keine Gefahr in Sicht.

> > Wohlgemerkt, ich meine hiermit FreeBSD 4, unter 6 dürfte sich an der
> > Stelle etwas getan haben (libtrhead vs. libthr o.ä.).
>
> Es sind ein paar Libs hinzugekommen, die Symbole der libc mit anderem
> Inhalt ersetzen, aber das Konzept des austauschens ist geblieben.

Okay, dann bleibt es dabei. Prima, dann kann ich die ganze Sache mitsamt
der dahinter vermuteten Fehler vergessen. :)

Danke sehr,
Marc

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 16 Jul 2007 - 12:22:55 CEST

search this site