Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: [hwloc-devel] libhwloc.so: undefined reference to `hwloc_hwloc_strncasecmp
From: Tony Breeds (tony_at_[hidden])
Date: 2009-10-01 18:27:28


Hello all,
        I wanted to have a look at but hit a small snag the final link ended with:
libtool: link: gcc -std=gnu99 -g -O2 -o .libs/lstopo lstopo-lstopo.o lstopo-lstopo-color.o lstopo-lstopo-text.o lstopo-lstopo-draw.o lstopo-lstopo-fig.o lstopo-lstopo-cairo.o lstopo-lstopo-xml.o -L/home/OpenHPC/hwloc/src/hwloc/trunk/src -lm ../src/.libs/libhwloc.so -Wl,-rpath -Wl,/home/OpenHPC/hwloc/build/lib
../src/.libs/libhwloc.so: undefined reference to `hwloc_hwloc_strncasecmp'
collect2: ld returned 1 exit status

I'm using a fresh svn checkout, svn info shows:

---
Path: .
URL: http://svn.open-mpi.org/svn/hwloc
Repository Root: http://svn.open-mpi.org/svn/hwloc
Repository UUID: 4b44e086-7f34-40ce-a3bd-00e031736276
Revision: 1090
Node Kind: directory
Schedule: normal
Last Changed Author: sthibaul
Last Changed Rev: 1090
Last Changed Date: 2009-10-02 04:32:28 +1000 (Fri, 02 Oct 2009)
---
and after runnign autogen.sh I build with:
./configure --prefix /home/OpenHPC/hwloc/build ; make ; make install
I suspect that somehow there is one to many "hwloc_" prefixes on that function call?
A svn an and svn log thinks that this revision is the cause:
[tony_at_thor trunk]$ svn log -r 1090 -v
------------------------------------------------------------------------
r1090 | sthibaul | 2009-10-02 04:32:28 +1000 (Fri, 02 Oct 2009) | 1 line
Changed paths:
   M /trunk/README
   M /trunk/configure.ac
   M /trunk/doc/Makefile.am
   M /trunk/include/hwloc/cpuset-bits.h
   M /trunk/include/hwloc/cpuset.h
   M /trunk/include/hwloc/glibc-sched.h
   M /trunk/include/hwloc/helper.h
   M /trunk/include/hwloc/linux-libnuma.h
   M /trunk/include/hwloc.h
   M /trunk/include/private/private.h
   M /trunk/src/bind.c
   M /trunk/src/topology-hpux.c
   M /trunk/src/topology-synthetic.c
   M /trunk/src/topology.c
   M /trunk/utils/hwloc-mask.h
hp-ux compiler fixes
------------------------------------------------------------------------
This quick hack fixes it for me, but I don't know if it will work with hp-ux
compilers.
Index: trunk/src/topology-synthetic.c
===================================================================
--- trunk/src/topology-synthetic.c	(revision 1090)
+++ trunk/src/topology-synthetic.c	(working copy)
@@ -37,19 +37,19 @@
       break;
 
     if (*pos < '0' || *pos > '9') {
-      if (!hwloc_hwloc_strncasecmp(pos, "machines", 2))
+      if (!hwloc_strncasecmp(pos, "machines", 2))
 	type = HWLOC_OBJ_MACHINE;
-      else if (!hwloc_hwloc_strncasecmp(pos, "nodes", 1))
+      else if (!hwloc_strncasecmp(pos, "nodes", 1))
 	type = HWLOC_OBJ_NODE;
-      else if (!hwloc_hwloc_strncasecmp(pos, "sockets", 1))
+      else if (!hwloc_strncasecmp(pos, "sockets", 1))
 	type = HWLOC_OBJ_SOCKET;
-      else if (!hwloc_hwloc_strncasecmp(pos, "cores", 2))
+      else if (!hwloc_strncasecmp(pos, "cores", 2))
 	type = HWLOC_OBJ_CORE;
-      else if (!hwloc_hwloc_strncasecmp(pos, "caches", 2))
+      else if (!hwloc_strncasecmp(pos, "caches", 2))
 	type = HWLOC_OBJ_CACHE;
-      else if (!hwloc_hwloc_strncasecmp(pos, "procs", 1))
+      else if (!hwloc_strncasecmp(pos, "procs", 1))
 	type = HWLOC_OBJ_PROC;
-      else if (!hwloc_hwloc_strncasecmp(pos, "misc", 2))
+      else if (!hwloc_strncasecmp(pos, "misc", 2))
 	type = HWLOC_OBJ_MISC;
 
       next_pos = strchr(pos, ':');
Yours Tony