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
