libX11.so: undefined reference to `....

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Středa Listopad 8 21:37:54 CET 2000


On Wed, 8 Nov 2000, Josef Stengl wrote:

> gcc  -g -O2 -Wall  -o smdiag  smdiag.o hdrvcomm.o -L/usr/X11R6/lib -lX11
> /usr/X11R6/lib/libX11.so: undefined reference to `getpwuid_r na GLIBC_2.1.2'
> /usr/X11R6/lib/libX11.so: undefined reference to `shmctl na GLIBC_2.2'
> /usr/X11R6/lib/libX11.so: undefined reference to `getpwnam_r na GLIBC_2.1.2'

To znamena, ze z libX11.so se odkazuji symboly s verzi takovou, jaka se
v instalovanem glibc nenachazi. Muzete se podivat pomoci objdump -T
(sice to porad neni Solarisove prs, ale lepsi nez nic) do /lib/libc.so.6
(?), jake verze tam ve skutecnosti mate.

> Nejzajímavjěší (pro mě) na tom je, že když smažu simlink
> /usr/X11/lib/libX11.so.6 -> libX11.so.6.1, tak překlad proběhne bez problémů.

Pravdepodobne mate libX11.so -> libX11.so.6. Tim, jak smazete mezilehly
symlink, zpusobite, ze libX11.so prestane jako soubor existovat a linker
zrejme misto toho pouzije libX11.a (ktere prilinkuje staticky) a to
bud ma verze symbolu dobre, nebo vubec ne.

Nicmene je dost pravdepodobne, ze to nebude spravne fungovat, protoze
zmena verze symbolu indikuje binarni nekompatibilitu (napr. zmenu
predavanych struktur), ledaze by glibc developeri menili verze z nudy.

Overte, ze mate od glibc i od XFree86 historicky odpovidajici verze. Mozna
zkuste i alternativni XFree86 (mate-li 3.x.., pak 4, resp. naopak).
Nepomuze-li to, pak se to da opravit jedine prebuildovanim libX11.so.6 ze
zdrojaku. V kazdem pripade si muzete svou frustraci ventilovat na
Bugzille. :)

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux