On Sat, Nov 20, 2010 at 12:24 AM, Russell <russ...@dotplan.dyndns.org> wrote:
> Trying to compile Hercules (a s/390 emulator) on 4.8/sparc64
> and hit this error.
>
> .libs/herculesS.o(.rodata+0x2d0): undefined reference to `aliases2_lookup'
>
> that particular function is in libiconv.
> I managed to get ld to produce verbose output and saw
>
> attempt to open /usr/local/lib/libiconv.so.6.0 succeeded
> -liconv (/usr/local/lib/libiconv.so.6.0)
>
> hell I even checked libiconv with nm

Ah, but you did you understand what nm was telling you?

$ nm /usr/local/lib/libiconv.so.6.0 | grep aliases2
0000d5c0 t aliases2_lookup
$

>From the nm(1) manpage:
----
     Each symbol name is preceded by its value (a blank field if the symbol is
     undefined) and one of the following letters:
     ...
           T       text segment symbol
     ...
     If the symbol is local (non-external), the type letter is in lower case.
     The output is sorted alphabetically.
----

So, aliases2_lookup is local to libiconv.so and can't be accessed
externally.  To put it another way, the program is peeking where it
shouldn't.  Bad Programmer, no cookie!  Go yell at the that project...


Philip Guenther

Reply via email to