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