Problém s linkovaním .so

Ferdinand Prantl Ferdinand.Prantl na ff.cuni.cz
Pondělí Leden 24 10:39:34 CET 2000


On Fri, Jan 21, 2000 at 12:46:38PM +0100, Marek Antozi wrote:
> Dobrý deň.
> 
> Trosšku programujem a program mám urobený tak, že používa mnou vytvorenú
> .so knižnicu.
> Túto knižnicu kompilujem a linkujem následovne:
> cc -fstrength-reduce -O3 -Wall -D__RELEASE -DNO_SEAL -fPIC -c hw_x.c -o
> lxwin.o
> cc -shared -fPIC -o bin/lxwin.so lxwin.o -L /usr/X11R6/lib -lX11 -lXext
> -lXxf86vm -lXxf86dga
> toto urobí niečo také:
> ldd lxwin.so 
>         libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x2aab5000)
>         libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x2ab59000)
>         libc.so.6 => /lib/libc.so.6 (0x2ab65000)
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
> 
> ciže všetky undefined symbols sú hľadané v systémových .so
> 
> Lenže ja potrebujem niečo také že tieto veci budú prilinkované k mojej
> .so, čiže v podstate bude staticky zlinkovaná. Skúšal som niečo také:
> 
> cc -fstrength-reduce -O3 -Wall -D__RELEASE -DNO_SEAL -fPIC -c hw_x.c -o
> lxwin.o 
> cc -shared -fPIC -o bin/lxwin.so lxwin.o -L /usr/X11R6/lib
> /usr/X11R6/lib/libX11.a /usr/X11R6/lib/libXext.a 
> /usr/X11R6/lib/libXxf86vm.a /usr/X11R6/lib/libXxf86dga.a
> 
> Ale to mi program zatrúbi pri funkcii dlsym, undefined symbol :(
> 
> Ako to spraviť aby .so používala externe nanajvýš tak libc.so.6 a
> /lib/ld-linux.so.2 ?
> Prosím pomožte mi ;)

  Knihovny, ktere chcete mit linkovane staticky, uvedte na radku pro ld
  ve verzich libxxx.a, ja jsem takhle chtel napr. curses:

    gcc [...] -lncurses

  nebo "natvrdo" (jednou mi to jinak neslo)

    gcc [...] /usr/lib/libncurses.a

  A jesti vas otravuji hlasky o unresolved externals, zkuste parametr
  (pri linkovani -shared je to skoro nezbytnost ;-)

    gcc [...] -expect_unresolved \*


    zdravi

      Ferda Prantl  

-- 

   "Jen ve svych snech jsme svobodni. Po zbytek zivota potrebujeme penize."
----------------------------------
Ferdinand Prantl
LVT FF UK
e-mail: prantl na ff.cuni.cz
www: http://www.ff.cuni.cz/~prantl
ICQ: 36302930


Další informace o konferenci Linux