John> Was libncurses.a compiled with -fpic (or -fPIC, if necessary)?

    John> http://mail.python.org/pipermail/python-dev/2001-March/013510.html

When built shared the source was compiled with -fPIC.  -fPIC is not used
when not built shared.  I forced that in a non-shared build.  It still gave
me the undefined acs32map error.  I tried adding either termlib or termcap
to the link libraries, as they both provide that symbol:

    bash-2.03$ nm -p /usr/lib/libtermcap.
    libtermcap.a     libtermcap.so    libtermcap.so.1  
    bash-2.03$ nm -p /usr/lib/libtermcap.so | egrep acs32map
    0000245332 B acs32map
    bash-2.03$ nm -p /usr/lib/libtermcap.a | egrep acs32map
    0000000004 D acs32map
    0000000000 U acs32map
    0000000000 U acs32map
    0000000000 U acs32map
    0000000000 U acs32map
    0000000000 U acs32map

I got all sorts of warnings about various symbols having differing sizes:

    ld: warning: symbol `acs_map' has differing sizes:
            (file /opt/app/nonc++/ncurses-5.5/lib/libncurses.a(lib_acs.o) 
value=0x200; file /usr/ccs/lib/libtermcap.so value=0x4);
            /opt/app/nonc++/ncurses-5.5/lib/libncurses.a(lib_acs.o) definition 
taken
    ld: warning: symbol `numnames' has differing sizes:
            (file /opt/app/nonc++/ncurses-5.5/lib/libncurses.a(names.o) 
value=0xa0; file /usr/ccs/lib/libtermcap.so value=0x88);
            /opt/app/nonc++/ncurses-5.5/lib/libncurses.a(names.o) definition 
taken
    ...

The link succeeded when I added termcap and the generated _curses and
_curses_panel modules import successfully.  The fact that both modules
appear to refer to /usr/lib/libcurses.so.1 now:

    $ ldd build/lib.solaris-2.8-i86pc-2.4/_curses.so
            libcurses.so.1 =>        /usr/lib/libcurses.so.1
            libgcc_s.so.1 =>         /opt/app/nonc++/lib/libgcc_s.so.1
            libc.so.1 =>     /usr/lib/libc.so.1
            libdl.so.1 =>    /usr/lib/libdl.so.1
    $ ldd build/lib.solaris-2.8-i86pc-2.4/_curses_panel.so 
            libcurses.so.1 =>        /usr/lib/libcurses.so.1
            libgcc_s.so.1 =>         /opt/app/nonc++/lib/libgcc_s.so.1
            libc.so.1 =>     /usr/lib/libc.so.1
            libdl.so.1 =>    /usr/lib/libdl.so.1

bothers me since I explicitly asked to get the version I had installed and
(based on the warnings above) it appears to have retrieved many symbols from
that version.  Also, running the unit test seems to hang.  It certainly ties
up the xterm.

Skip
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to