From 1d80fee3649f66fbb49a3225af97eb90adf2c9d5 Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski Date: Thu, 2 Apr 2009 23:19:36 -0500 Subject: [PATCH] Clean up multipath linking This is a patch to fix up the linking. It does two things. First, it makes libmultipath.so install to /lib/ just like a normal shared library, so you don't have to use -rpath to link to it. Second, and more importantly, it moves the libaio linking into libcheckdirectio.so, where it belongs. Since libcheckdirectio.so is a dynamic shared object, multipath and multipathd don't know what functions they need to link in from libaio. This fixes the directio lockup for me. Signed-off-by: Benjamin Marzinski --- libmultipath/Makefile | 7 ++++--- libmultipath/checkers/Makefile | 3 +++ multipath/Makefile | 5 ++--- multipathd/Makefile | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/libmultipath/Makefile b/libmultipath/Makefile index c70d429..35cb911 100644 --- a/libmultipath/Makefile +++ b/libmultipath/Makefile @@ -23,14 +23,15 @@ endif all: $(LIBS) $(LIBS): $(OBJS) - $(CC) $(SHARED_FLAGS) $(CFLAGS) -o $@ $(OBJS) + $(CC) $(SHARED_FLAGS) -Wl,-soname,$@ $(CFLAGS) -o $@ $(OBJS) install: + $(INSTALL_PROGRAM) -d $(DESTDIR)$(prefix)/lib + $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(prefix)/lib/$(LIBS) $(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) -m 755 $(LIBS) $(DESTDIR)$(libdir)/$(LIBS) uninstall: - rm -f $(DESTDIR)$(libdir)/$(LIBS) + rm -f $(DESTDIR)$(prefix)/lib/$(LIBS) clean: rm -f core *.a *.o *.gz *.so diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile index a20dfac..22fe82c 100644 --- a/libmultipath/checkers/Makefile +++ b/libmultipath/checkers/Makefile @@ -17,6 +17,9 @@ CFLAGS += -I.. all: $(LIBS) +libcheckdirectio.so: libsg.o directio.o + $(CC) $(SHARED_FLAGS) -o $@ $^ -laio + libcheck%.so: libsg.o %.o $(CC) $(SHARED_FLAGS) -o $@ $^ diff --git a/multipath/Makefile b/multipath/Makefile index 2d74ffe..e0031a2 100644 --- a/multipath/Makefile +++ b/multipath/Makefile @@ -6,9 +6,8 @@ include ../Makefile.inc OBJS = main.o -CFLAGS += -I$(multipathdir) -Wl,-rpath,$(libdir) -LDFLAGS += -lpthread -ldevmapper -laio -ldl \ - -lmultipath -L$(multipathdir) +CFLAGS += -I$(multipathdir) +LDFLAGS += -lpthread -ldevmapper -ldl -lmultipath -L$(multipathdir) EXEC = multipath diff --git a/multipathd/Makefile b/multipathd/Makefile index b1af76c..32d9ef5 100644 --- a/multipathd/Makefile +++ b/multipathd/Makefile @@ -5,8 +5,8 @@ include ../Makefile.inc # # basic flags setting # -CFLAGS += -I$(multipathdir) -Wl,-rpath,$(libdir) -LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -laio -ldl \ +CFLAGS += -I$(multipathdir) +LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -ldl \ -lmultipath -L$(multipathdir) # -- 2.7.4