[linux] glibc-2.2.5 a 2.3.2 sucastne na jednom systeme -ako na to?

peto fodrek na kasr.elf.stuba.sk
Pondělí Srpen 23 16:52:16 CEST 2004


Vdaka za rady!
----- Original Message ----- 
From: "Matus UHLAR - fantomas" <uhlar na fantomas.sk>
To: <linux na lists.linux.sk>
Sent: Monday, August 23, 2004 3:56 PM
Subject: Re: [linux] glibc-2.2.5 a 2.3.2 sucastne na jednom systeme -ako na
to?


> On 23.08 13:45, peto wrote:
> > Po vsetkych pokusoch a radach zistenych cez google stale nedokazem
> > spojaznit- resp. spustit instalator OO.org 1.1.2CS (mam 1.1.0 a poslal
> > som bugreport na podporu export/import z mathtype, ktorym sa po vydani
> > 1.1.1 aj zaoberali), ktory tvrdi, ze potrebuje glibc-2.2.0 a vyssie ale
> > ldd ukazuje, ze potrebuje GLIBC_PRIVATE, ktory je az v glibc-2.3.0
> > skusal som instralovat glibc-2.3.3 ale bez uspechu - potrebuje novsie
> > verzie make a podobne. (mam MDK9.0) s novou verziou GLIBCPP, ktore
> > potrebovalo kradio, som si poradil instalaciou noveho gcc(mam paralelne
> > aj stare) a prekopirovanim libstdc++ do /lib. S glibc-2.3.2, ale boli
> > problemy ako hrom
>
> ake problemy?

tie su ocislovane

>libc je jeden z najdolezitejsich balikov na instalacii a
> nemozes sa s nou len tak hrat, skusal si ju upgradnut? Obavam sa ze kym OO
> nevyriesia dany problem, budes musiet pouzit novsi Mdk (alebo nieco ine)
> alebo si ponechat starsiu verziu OO


> > 1.  bolo treba pridat ",..." ako posledny parameter v sscanf, co je dost
> > divne
> kam? ... sa pridava len do deklaracie funkcie... ak potrebujes deklarovat
> sscanf, zrejme je chyba v tom ze nepouzivat hlavickove subory a mal by si.

v distribucii glibc-2.3.2 je v adresarai stdio-common subor sscanf.c a v nom
bolo
...
/#include <stdarg.h>

#include <stdio.h>

#ifdef USE_IN_LIBIO

# include <libio/iolibio.h>

# define __vsscanf(s, f, a) _IO_vsscanf (s, f, a)

#endif

/* Read formatted input from S, according to the format string FORMAT. */

/* VARARGS2 */

int

sscanf (s, format)

const char *s;

const char *format;

{

va_list arg;

int done;

va_start (arg, format);

done = __vsscanf (s, format, arg);

va_end (arg);

return done;

}

libc_hidden_def (sscanf)

#ifdef USE_IN_LIBIO

# undef _IO_sscanf

/* This is for libg++. */

strong_alias (sscanf, _IO_sscanf)

#endif

...

ale  malo tam byt
int sscanf (const char *s, const char *format,...) lebo inak "vystekaval"
kompilator, ze pouzivam va_start vo funkcii s pevnym poctom parametrov


> > 2.  kompilacia presla v poriadku,ale po zmene libc.so.6 odkazom na
> > libc-2.3.2 s pridanim linku ld-linux.so.2 na   ld-2.3.2 ci rozne
komibancie
> > starych a novych verzii glibc aj dynamickeho linkera neslo bootovat -
musia
> > tam byt stare verzie oboch.
>
> kombinovat dve verzie libs je kua riziko, radsej to nerob.

Ale ved ja som zmenil len default dynamicky linker a glibc a aj s oboma
novymi verziami to nejde.

> > 3. inu velkost suborov som dostal pri pouziti kernel headers v
/usr/src/,
> > ale ani to nepomohlo,
>
> to tiez nerob, moze to narobit dalsiu paseku.

samozrejme, ze moze, ale v navode to odporucali ak sa kernel nevie dohodnut
z libs. Este ma napadlo skompilovat kerenl s novymi libc a v nom bootnut
nove libc.

> > 4. nepomohla ani rada na net-e, kde potrebovali mat sucastne glibc-2.0 a
> > glibc-2.1 a trvrdili, ze to ide cez instalaciu seconadry glibc do
> > /usr/local/lib/glibc2 (mam tam link na non-root particiu, kde mam
> > nainstalovane glibc) a  nastavenia LD_* premennych v scripte, ktory
spusti
> > instalotok
> > nech nastavujem ako nastvujem  LD_PRELOAD, LD_LIBRARY_PATH ,
LD_PRELOAD_PATH
> > a ewste aj ine LD_* parametre nedokazem spusit instalator? bud chyba
> > GLIBC2.3, alebo, ak su nastavene cesty ku spravnemu  libc, chyba
> > GLIBC_PRIVATE, ktore libc-2.3.2 ziskava z dynamickeho linkera ld-2.3.2,
> > lenze stale je ako linker ld-.2.2.5.Teda najvacsi problem je asi
dynamicka
> > zmena  dynamickeho linker-a.

Neviem ci niekde neexistuje nedokumentopvana volba LD_LINKER alebo podobne .
Pruser moze byt v tom, ze v tom navode len povedali, ze sa treba s LD*
pohrat a potom bola reakcia, ze uz to ide a navyse povodny linker bol z
novsej verzie libc.

> uff, toto moze byt vselicim... mozem odporucit len skusat albeo sa na to
> vybodnut. Pripadne si skontrolovat ci niekde nerobis chyby.

ani nie lebo ldd jasne ukazuje, ze symbol GLIBC_PRIVATE v novej verzii glibc
je uvedeny pri zavislosti glibc na novej verzii ld dokonca ju najde aj s
cestou.

Vdaka Peto




Další informace o konferenci linux