[Ocfs2-tools-devel] [PATCH] ocfs2-tools/build: Add -lpthread when building static programs

Mark Fasheh mfasheh at suse.com
Mon Mar 15 12:47:23 PDT 2010


This fixes the following build errors on latest SUSE and OpenSUSE releases:

gcc -O2 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -pipe  -static -o fsck.ocfs2 fsck.o dirblocks.o dirparents.o extent.o icount.o journal.o pass0.o pass1.o pass1b.o pass2.o pass3.o pass4.o pass5.o problem.o refcount.o slot_recovery.o strings.o util.o xattr.o ../libocfs2/libocfs2.a ../libo2dlm/libo2dlm.a ../libo2cb/libo2cb.a -L../libocfs2 -locfs2 -L../libo2dlm -lo2dlm  -L../libo2cb -lo2cb -lcom_err
/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/libcom_err.a(error_message.o): In function `fini_et_lock':
/usr/src/packages/BUILD/e2fsprogs-1.41.9/lib/et/error_message.c:74: undefined reference to `sem_destroy'
/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/libcom_err.a(error_message.o): In function `setup_et_lock':
/usr/src/packages/BUILD/e2fsprogs-1.41.9/lib/et/error_message.c:68: undefined reference to `sem_init'
/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/libcom_err.a(error_message.o): In function `et_list_unlock':
/usr/src/packages/BUILD/e2fsprogs-1.41.9/lib/et/error_message.c:95: undefined reference to `sem_post'
/usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../lib64/libcom_err.a(error_message.o): In function `et_list_lock':
/usr/src/packages/BUILD/e2fsprogs-1.41.9/lib/et/error_message.c:85: undefined reference to `sem_wait'
collect2: ld returned 1 exit status
make: *** [fsck.ocfs2] Error 1

I think it may be related to glibc version. For example, openSUSE 11.2 is
shipping a (relatively) new glibc compared to RHEL:

rpm -qa | grep glibc-devel
glibc-devel-2.10.1-10.5.1.x86_64
glibc-devel-32bit-2.10.1-10.5.1.x86_64

Signed-off-by: Mark Fasheh <mfasheh at suse.com>
---
 fsck.ocfs2/Makefile   |    3 ++-
 o2cb_ctl/Makefile     |    3 ++-
 ocfs2_hb_ctl/Makefile |    3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/fsck.ocfs2/Makefile b/fsck.ocfs2/Makefile
index d5f5d7e..44b5dd9 100644
--- a/fsck.ocfs2/Makefile
+++ b/fsck.ocfs2/Makefile
@@ -17,6 +17,7 @@ LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a
 
 ifndef OCFS2_DYNAMIC_FSCK
 LDFLAGS += -static
+STATICLIBS=-lpthread
 endif
 
 CFILES =	fsck.c		\
@@ -70,7 +71,7 @@ dist-subdircreate:
 	$(TOPDIR)/mkinstalldirs $(DIST_DIR)/include
 
 fsck.ocfs2: $(OBJS) $(LIBOCFS2_DEPS) $(LIBO2DLM_DEPS) $(LIBO2CB_DEPS)
-	$(LINK) $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS)
+	$(LINK) $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) $(STATICLIBS)
 
 $(OBJS): prompt-codes.h
 
diff --git a/o2cb_ctl/Makefile b/o2cb_ctl/Makefile
index d2710e6..4d5aa27 100644
--- a/o2cb_ctl/Makefile
+++ b/o2cb_ctl/Makefile
@@ -15,6 +15,7 @@ LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a
 
 ifndef OCFS2_DYNAMIC_CTL
 LDFLAGS += -static
+STATICLIBS=-lpthread
 endif
 
 DEFINES = -DVERSION=\"$(VERSION)\"
@@ -40,6 +41,6 @@ o2cb_config_CPPFLAGS = $(GLIB_CFLAGS) -DG_DISABLE_DEPRECATED
 o2cb_ctl_CPPFLAGS = $(GLIB_CFLAGS) -DG_DISABLE_DEPRECATED
 
 o2cb_ctl: $(O2CB_CTL_OBJS) $(LIBOCFS2_DEPS) $(LIBO2CB_DEPS)
-	$(LINK) $(LIBO2CB_LIBS) $(GLIB_LIBS) $(LIBOCFS2_LIBS) $(COM_ERR_LIBS)
+	$(LINK) $(LIBO2CB_LIBS) $(GLIB_LIBS) $(LIBOCFS2_LIBS) $(COM_ERR_LIBS) $(STATICLIBS)
 
 include $(TOPDIR)/Postamble.make
diff --git a/ocfs2_hb_ctl/Makefile b/ocfs2_hb_ctl/Makefile
index 0e1f583..e2e5d49 100644
--- a/ocfs2_hb_ctl/Makefile
+++ b/ocfs2_hb_ctl/Makefile
@@ -15,6 +15,7 @@ LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a
 
 ifndef OCFS2_DYNAMIC_CTL
 LDFLAGS += -static
+STATICLIBS=-lpthread
 endif
 
 DEFINES = -DVERSION=\"$(VERSION)\"
@@ -32,6 +33,6 @@ DIST_FILES = $(CFILES) $(HFILES) ocfs2_hb_ctl.8.in
 all: ocfs2_hb_ctl
 
 ocfs2_hb_ctl: $(OBJS) $(LIBOCFS2_DEPS) $(LIBO2DLM_DEPS) $(LIBO2CB_DEPS)
-	$(LINK) $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS)
+	$(LINK) $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) $(STATICLIBS)
 
 include $(TOPDIR)/Postamble.make
-- 
1.6.4.2




More information about the Ocfs2-tools-devel mailing list