Just to let everyone know...

I was trying to compile ksymoops so that I could report a kernel oops to the
cmsfs developer (hi Rick! :), and I was getting a nasty error:
gcc io.o ksyms.o ksymoops.o map.o misc.o object.o oops.o re.o
symbol.o -Dlinux -Wall -Wno-conversion -Waggregate-return -Wstrict-prototype
s -Wmissing-prototypes -DINSTALL_PREFIX="\"/usr\"" -DCROSS="\"\""  -DDEF_KSY
MS=\"/proc/ksyms\" -DDEF_LSMOD=\"/proc/modules\" -DDEF_OBJECTS=\"/lib/module
s/*r/\" -DDEF_MAP=\"/usr/src/linux/System.map\"  -Wl,-Bstatic -lbfd -liberty
 -Wl,-Bdynamic -o ksymoops
/usr/lib/gcc-lib/s390-slackware-linux/3.2/../../../libbfd.a(elf-strtab.o):
In function `_bfd_elf_strtab_finalize':
elf-strtab.o(.text+0x784): undefined reference to `htab_create_alloc'
/usr/lib/gcc-lib/s390-slackware-linux/3.2/../../../libbfd.a(merge.o): In
function `merge_strings':
merge.o(.text+0xc50): undefined reference to `htab_create_alloc'
collect2: ld returned 1 exit status
make: *** [ksymoops] Error 1

Doing google searches didn't turn up much, other than the fact that the
symbol belonged to binutils.  Some more research led me to the understanding
that both gcc and binutils create a libiberty.a static library.  The one
from binutils includes the htab_create_alloc routine, the one from gcc does
not.

So, I'm not finished trying to understand the situation (why have two
libraries with the same name but different contents? etc.), but for now at
least, if you run into this problem, try and see where your libiberty.a
library comes from.

Mark Post

Reply via email to