From: noreply@... Date: 2007-04-23T17:39:32+09:00 Subject: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed Bugs item #10140, was opened at 2007-04-16 17:32 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=10140&group_id=426 Category: Core Group: 1.8.6 Status: Open Resolution: None Priority: 3 Submitted By: Michal Suchanek (hramrach) Assigned to: Nobody (None) Summary: Cannot build with extra library path if previous version already installed Initial Comment: I tried building with LDFLAGS=-L/sw/lib which is the standard way to build a package with libraries outside of system library locations. There is apparently already a libruby_static in there because the build has failed on an undefined symbol which was defined in ./libruby_static.a I modified the Makefile so that it puts XLDFLAGS before LDFLAGS. That way I get -L. -L/sw/lib and the build works. However, if XLDFLAGS contained some linker options meant to override options in LDFLAGS it would not work this way. ---------------------------------------------------------------------- >Comment By: Michal Suchanek (hramrach) Date: 2007-04-23 10:39 Message: Thanks to Nobu Nakada for patches should fix this particular problem: Index: configure.in =================================================================== --- configure.in (revision 12175) +++ configure.in (working copy) @@ -150,4 +150,9 @@ fi AC_PROG_CC AC_PROG_GCC_TRADITIONAL +if test "$GCC" = yes; then + linker_flag=-Wl, +else + linker_flag= +fi RUBY_PROG_GNU_LD @@ -1392,12 +1397,8 @@ if test "$enable_shared" = 'yes'; then fi if test "$enable_rpath" = yes; then - if test "$GCC" = yes; then - LIBRUBYARG_SHARED='-Wl,-R -Wl,$(libdir) -L$(libdir) -L. '"$LIBRUBYARG_SHARED" - else - LIBRUBYARG_SHARED='-R $(libdir) -L$(libdir) -L. '"$LIBRUBYARG_SHARED" - fi + LIBRUBYARG_SHARED="${linker_flag}-R ${linker_flag}\ -L. -L\ $LIBRUBYARG_SHARED" fi -XLDFLAGS="$XLDFLAGS -L." +LDFLAGS="-L. $LDFLAGS" AC_SUBST(ARCHFILE) Index: lib/mkmf.rb =================================================================== --- lib/mkmf.rb (revision 12191) +++ lib/mkmf.rb (working copy) @@ -292,5 +292,10 @@ end def libpathflag(libpath=$DEFLIBPATH|$LIBPATH) libpath.map{|x| - (x == "$(topdir)" ? LIBPATHFLAG : LIBPATHFLAG+RPATHFLAG) % x.quote + case x + when "$(topdir)", /\A\./ + LIBPATHFLAG + else + LIBPATHFLAG+RPATHFLAG + end % x.quote }.join end @@ -1444,4 +1449,5 @@ def init_mkmf(config = CONFIG) $LIBRUBYARG_SHARED = config['LIBRUBYARG_SHARED'] $DEFLIBPATH = $extmk ? ["$(topdir)"] : CROSS_COMPILING ? [] : ["$(libdir)"] + $DEFLIBPATH.unshift(".") $LIBPATH = [] $INSTALLFILES = nil @@ -1535,6 +1541,6 @@ LINK_SO = config_string('LINK_SO') || "ld $(DLDFLAGS) -r -o $@ $(OBJS)\n" else - "$(LDSHARED) $(DLDFLAGS) $(LIBPATH) #{OUTFLAG}$@ " \ - "$(OBJS) $(LOCAL_LIBS) $(LIBS)" + "$(LDSHARED) #{OUTFLAG}$@ $(OBJS) " \ + "$(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)" end LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"' While testing these I found other problems that are not related to using -L in LDFLAGS so I will file separate reports for those. ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=10140&group_id=426