*ldflags$b$k$d$$$f(b

é??æ?¬ã¨ã??ã?ã?まã?ã??
ã?ã?ã?ã«ãªã£ã¦ã?まã?ã??

ã?ã?ã?å?ã®ä»¥ä¸?のã??ã??ã?

  • lib/mkmf.rb (init_mkmf): set default $LDFLAGS. Patch by Michal
    ã??Suchanek . [ruby-talk:216256]
    にã??ã??ã?AIXでæ?¡å¼µã?©ã?¤ã??ã?©ã?ªã®compileã?é??ã??なくなっã?ので調べまã?ã?ã??

ひとつ���ね���ので���*FLAGSと��
å¤?æ?°ã«ã¤ã?て以ä¸?のã??ã?に解é??ã?ã?のでã?ã?ã?æ?å?³ã?ã??てã?ã??ã??ã?に
ç?解できてã?まã?でã?ã??ã?ã?ï¼?
DLDFLAGS *.soのå?±æ??ã?©ã?¤ã??ã?©ã?ªã??ä½?ã??æ??にã?ªã?³ã?«ã«ã?ã?ã?ã?ã?ã??の
XLDFLAGS rubyã?³ã??ã?³ã??ã??つくã??とき"だã?"にã?ªã?³ã?«ã«ã?ã?ã?ã?ã?ã??の
LDFLAGS ã?つでã??ã?ã?ã?ã?ã?ã??の

とã?ã?まã?のã??ã?ä»¥å?configure.inでã?AIXではã?
LDFLAGS=“-brtl -bE:ruby.imp”
とã?ã?てã?ã?だã?ã?のでã?ã?ã?ä¸?è¨?のã??ã??ã?ã§ã?のã??ã?©ã?¡ã?¼ã?¿ã?æ?¡å¼µã?©ã?¤ã??ã?©ã?ªã®
ã?ªã?³ã?¯ã«ã?ã?ã??ã??ã?になã??まã?ã?ã??ruby.impはã?½ã?¼ã?¹ã??å±?é??ã?ã?ã??ã?£ã?¬ã?¯ã??ã?ªã«
ã?ã??まã?のでã?æ?¡å¼µã?©ã?¤ã??ã?©ã?ªã®ã?ªã?³ã?¯æ??にみつã?ã??なã?とã?ã?ã??ã??ã??ã?に
なってã?まã?まã?ã?ã??

Linuxã®å ´å?でã?とã?ã?のpatchの影é?¿ã§ã?æ?¡å¼µã?©ã?¤ã??ã?©ã?ªã®ã?ªã?³ã?¯æ??にã??

-rdynamic -Wl,-export-dynamicã?ã?ã?ã??ã??ã?になã??まã?ã?ã??

AIXではæ?¡å¼µã?©ã?¤ã??ã?©ã?ªã®ã?³ã?³ã??ã?¤ã?«ã«ã?ã??ã??のã??ã?©ã?¡ã?¼ã?¿ã¯å¿?要なã?のでã?
ã?ままでLDFLAGSとã?てã?ã?ã??のã??ã?XLDFLAGSにã?ã??ばã?³ã?³ã??ã?¤ã?«ã¯ã¨ã?ã??まã?ã??
とã?ã?ã?ã?ä»?度はã?のã??ã?©ã?¡ã?¼ã?¿ã?minirubyにã?ã?ã??なくなã??まã?ã??

ã?の-bE:ruby.impã?ªã??ã?·ã?§ã?³ã¯ã?ruby.impとã?ã?ã??ã?¡ã?¤ã?«ã«å??æ??ã?ã??ã?é?¢æ?°ã??
ä»?のã?©ã?¤ã??ã?©ã?ªã?ã??みã?ã??ã??ã?にã?¨ã?¯ã?¹ã?ã?¼ã??ã?ã??とã?ã?ã??のでã?ã??
ã?ã??ã?なã?とã?libruby-static.aのなã?のé?¢æ?°ã??ã?æ?¡å¼µã?©ã?¤ã??ã?©ã?ªã?
ã?¢ã?¯ã?»ã?¹ã§ããªããªã??まã?ã??

XLDFLAGSã??minirubyにã?ã?ã?ばã?ã?ã?とæ?ã£ã?のでã?ã?ã?
é?å?»ã?­ã?°ã??みã??とã?ã??はã??ã?XLDFLAGSはrubyã??ã?ªã?³ã?¯ã?ã??ときのみのã?ã?ã®ã??の
のã??ã?でã?ã??
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/19723
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/23588

minirubyにã?のã?ªã??ã?·ã?§ã?³ã?ã?ã?ã??なã?å ´å?の現象とã?まã?てはã?
make installのé??中でcoreã??吐ã?てã?まã?まã?ã??
minirubyã?etc.soのInit_etcにはã?っã?中でã?ちてã?まã?ã??
dbxでInit_etcにはã?っã?æ??ç?¹ã§ã¨ã?ã¦ã?stepã?ã??とcoreになã??まã?ã??
minirubyのä½?æ?æ??にä¸?è¨?のã?ªã??ã?·ã?§ã?³ã??つã?まã?とã?rb_define_moduleなどã?
正常にå?¼ã¹ã¦ã?のå?é¡?ã?解æ¶?ã?まã?ã??
ã?のetc.soはã?fileutilsçµ?ç?±ã§å?¼ã°ã??てã?ã??ã??ã?でã?ã??
etc.soã?なã?ã??ばloadに失æ??ã?てã?ãªãã¦ã??ã?ã??ã??ã?なå?¦ç?ã?èµ°ã??ã?
installはé??中までã?まくã?くのでã?ã?ã?ãã®å¾?のã??ã?­ã?¥ã?¡ã?³ã??の
ç??æ?ã®ã¨ãã«instruby.rbã?å?¼ã??でã?ã??fileutilsã?etc.soã??ç?ºè¦?ã?てã?まってã?
結å±?ä¸?述のç?ç?±ã§coreã??吐ã?てã?まã?まã?ã??
ã?ã??ã?はã?ã?でにrubyã?installã?てã?っã?å ´å?はext/dlのã?³ã?³ã??ã?¤ã?«ã®
é??中でã??はã??minirubyã?core dumpã?てã?まã?まã?ã??

まとã?ã¾ã?とã?rubyとminirubyのã?ªã?³ã?¯æ??にだã?ã?ã?ã?ã?ã?
ã?ªã??ã?·ã?§ã?³ã?ã?ã??のでなã??とã?ã?ã?ã?ã??とã?ã?ã?とになã??まã?ã??

そã?で提æ¡?なのでã?ã?ã?ç¾å?¨minirubyå°?ç?¨ã®LDFLAGSã?ã?ã??まã?ã??のでã?
MLDFLAGSなどとã?てã?å®?義できã??ã??ã?にã?ã?てã?ã?だã?まã?ã??でã?ã??ã?ã?ï¼?
ä¸?å¿?ã?のæ¡?のã??ã??ã?ã??æ·»ä»?ã?まã?ã??
ã?のæ?¹æ³?なã??ä»?のplatformにã?è¿·æ??ã??ã?ã?ã?ã?ã??ã?とã??なã?ã?なとæ?ã?まã?ã?ã??
ã?だã?MLDFLAGSとã?ã?名å?ã?ã?ã?ã??にくã?ã?ã??ã?ã??まã?ã??のでã?é©å??な名å?ã??
å?½åã?てã?ã?だきã?ã?とæ?ã?まã?ã??
ã?ã??ã?はã?ã??ã?ほã?になにã?æ?¹æ³?ã?ã?ã??ばã?æ?¹é?ã??ã?ã?だã?ã??ばã?
è?ªå??でä½?業ã?ã?ã?とæ?ã?まã?ã??

é?·ã??とどã?ã??ã?ã?まã?ã??ã??
ã??ã?ã?くã?ねã?ã?ã?ã?ã?まã?ã??

e$B$J$+$@$G$9!#e(B

At Fri, 27 Oct 2006 02:47:47 +0900,
Yutaka K. wrote in [ruby-dev:29698]:

e$B$9$3$7A0$N0J2<$N%Q%C%Ae(B

  • lib/mkmf.rb (init_mkmf): set default $LDFLAGS. Patch by Michal
    Suchanek . [ruby-talk:216256]
    e$B$K$h$j!"e(BAIXe$B$G3HD%%i%$%V%i%j$Ne(Bcompilee$B$,DL$i$J$/$J$C$?$N$GD4$Y$^$7$?!#e(B

e$B$9$$$^$;$s!"$=$s$J$H$3$m$K1F6A$,=P$k$H$O!#e(B

e$B$R$H$D$$?$:$M$7$?$$$N$G$9$,!"e(BFLAGSe$B$H$$$&e(B
e$BJQ?t$K$D$$$F0J2<$N$h$&$K2r<a$7$?$N$G$9$,!"0U?^$5$l$F$$$k$h$&$Ke(B
e$BM}2r$G$-$F$$$^$9$G$7$g$&$+!)e(B
DLDFLAGS *.soe$B$N6&M-%i%$%V%i%j$r:n$k;~$K%j%s%+$K$o$?$7$?$$$b$Ne(B
XLDFLAGS rubye$B%3%^%s%I$r$D$/$k$H$-e(B"e$B$@$1e(B"e$B$K%j%s%+$K$o$?$7$?$$$b$Ne(B
LDFLAGS e$B$$$D$G$b$o$?$7$?$$$b$Ne(B

XLDFLAGSe$B$O<B9T%U%!%$%k$r:n$k$H$-!"$+$Je(B?

XLDFLAGSe$B$re(Bminirubye$B$K$o$?$;$P$$$$$+$H;W$C$?$N$G$9$,!"e(B
e$B2a5n%m%0$r$$k$H!"$d$O$j!"e(BXLDFLAGSe$B$Oe(Brubye$B$r%j%s%/$9$k$H$-$N$$N$?$a$N$b$Ne(B
e$B$N$h$&$G$9!#e(B
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/19723
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/23588

[ruby-dev:23565]e$B$G$Oe(Bminirubye$B$K$be(BXLDFLAGSe$B$r;H$*$&$H$$$&OC$K$J$C$F$^$9$M!#e(B

minirubye$B$K$3$N%%W%7%g%s$,$o$?$i$J$$>l9g$N8=>]$H$7$^$7$F$O!"e(B
make installe$B$NESCf$Ge(Bcoree$B$rEG$$$F$7$^$$$^$9!#e(B
minirubye$B$,e(Betc.soe$B$Ne(BInit_etce$B$K$O$$$C$?Cf$G$
$A$F$$$^$9!#e(B

MINIOBJSe$B$Ke(Bdmydln.oe$B$rDI2C$7$F!“e(Bminirubye$B$G$O3HD%%i%$%V%i%j$r%m!<%I$7$J$$e(B
e$B$h$&$K$9$k!”$H$$$&J}K!$b$"$j$^$9$,!#e(B

e$B$^$H$a$^$9$H!“e(Brubye$B$He(Bminirubye$B$N%j%s%/;~$K$@$1$o$?$7$?$$e(B
e$B%*%W%7%g%s$,$”$k$N$G$J$s$H$+$7$?$$!#$H$$$&$3$H$K$J$j$^$9!#e(B

e$B$3$l$G$O$I$&$G$7$g$&$+!#e(B-be$B%*%W%7%g%s$N=g=x$OLdBj$G$O$J$$!“e(BAIXe$B$G$N%@%$e(B
e$B%J%_%C%/%j%s%/$OFH<+$C$]$$$N$Ge(Bdln_a_oute$B$OL58z!”$H2>Dj$7$F$^$9!#e(B

Index: Makefile.in

RCS file: /pub/cvs/ruby/Makefile.in,v
retrieving revision 1.55.2.18
diff -U 2 -p -r1.55.2.18 Makefile.in
— Makefile.in 1 Oct 2006 15:00:32 -0000 1.55.2.18
+++ Makefile.in 27 Oct 2006 04:34:29 -0000
@@ -98,5 +98,5 @@ all:
miniruby$(EXEEXT):
@$(RM) $@

  •   $(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS)
    

$(OUTFLAG)$@ $(LDFLAGS) $(MAINLIBS)

  •   $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ)
    

$(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@

$(PROGRAM):
Index: configure.in

RCS file: /pub/cvs/ruby/configure.in,v
retrieving revision 1.212.2.63
diff -U 2 -p -r1.212.2.63 configure.in
— configure.in 22 Oct 2006 19:28:46 -0000 1.212.2.63
+++ configure.in 27 Oct 2006 04:44:38 -0000
@@ -1046,11 +1046,13 @@ if test “$with_dln_a_out” != yes; then
rb_cv_dlopen=yes ;;
aix*) if test “$GCC” = yes; then

  •                       : ${LDSHARED='gcc -shared'}
    
  •                       DLDFLAGS='-Wl,-G -eInit_$(TARGET)'
    
  •                       LDFLAGS='-Wl,-brtl -Wl,-bE:ruby.imp'
    
  •                    else
    
  •                      : ${LDSHARED='/usr/ccs/bin/ld'}
    
  •                      DLDFLAGS='-G -eInit_$(TARGET)'
    
  •                      LDFLAGS="-brtl -bE:ruby.imp"
    
  •   	    : ${LDSHARED='$(CC) -shared'}
    
  •   	    DLDFLAGS='-Wl,-G -eInit_$(TARGET)'
    
  •   	    LDFLAGS='-Wl,-brtl'
    
  •   	    XLDFLAGS='-Wl,-bE:ruby.imp'
    
  •   	else
    
  •   	    : ${LDSHARED='/usr/ccs/bin/ld'}
    
  •   	    DLDFLAGS='-G -eInit_$(TARGET)'
    
  •   	    LDFLAGS='-brtl'
    
  •   	    XLDFLAGS='-bE:ruby.imp'
                       fi
                       : ${ARCHFILE="ruby.imp"}
    

@@ -1360,10 +1362,9 @@ if test “$enable_shared” = ‘yes’; then
aix*)
if test “$GCC” = yes; then

  •   LIBRUBY_LDSHARED='$(CC) -shared'
    
  •   LIBRUBY_DLDFLAGS='-Wl,-G -Wl,-bE:ruby.imp -Wl,-bnoentry'
    
  •   LIBRUBY_DLDFLAGS='-Wl,-G -Wl,-bnoentry'
    
    else
  •   LIBRUBY_LDSHARED='/usr/ccs/bin/ld'
    
  •   LIBRUBY_DLDFLAGS='-G -bE:ruby.imp -bnoentry'
    
  •   LIBRUBY_DLDFLAGS='-G -bnoentry'
    
    fi
  • LIBRUBY_DLDFLAGS=“$LIBRUBY_DLDFLAGS $XLDFLAGS”
    LIBRUBYARG_SHARED=‘-L${libdir} -lruby’
    SOLIBS=‘-lm -lc’
    @@ -1501,7 +1502,4 @@ case “$target_os” in
    MINIOBJS=dmydln.o
    ;;
  • aix*)
  • PREINSTALL=‘@$(RM) -r $(prefix)/lib/$(LIBRUBY_A)
    $(prefix)/lib/$(LIBRUBY_SO)
    $(prefix)/lib/ruby/$(MAJOR).$(MINOR)/$(arch)’
  • ;;
    *)
    ;;
    @@ -1536,5 +1534,4 @@ AC_SUBST(COMMON_HEADERS)
    AC_SUBST(EXPORT_PREFIX)
    AC_SUBST(MINIOBJS)
    -AC_SUBST(PREINSTALL)

MAKEFILES=“Makefile echo $FIRSTMAKEFILE | sed 's/:.*//'

e$B$A$g$C$H%O%:%l$^$9$,!"e(B

In message [email protected]
on Fri, 27 Oct 2006 14:27:36 +0900,
“Nobuyoshi N.” [email protected] wrote:

e$B$R$H$D$$?$:$M$7$?$$$N$G$9$,!"e(BFLAGSe$B$H$$$&e(B
e$B$3$l$Oe(B Makeifle e$B$G$NOC$H$$$&$3$H$G!"NI$$$G$7$g$&$+!#e(B

e$BJQ?t$K$D$$$F0J2<$N$h$&$K2r<a$7$?$N$G$9$,!“0U?^$5$l$F$$$k$h$&$Ke(B
e$BM}2r$G$-$F$$$^$9$G$7$g$&$+!)e(B
DLDFLAGS *.soe$B$N6&M-%i%$%V%i%j$r:n$k;~$K%j%s%+$K$o$?$7$?$$$b$Ne(B
XLDFLAGS rubye$B%3%^%s%I$r$D$/$k$H$-e(B"e$B$@$1e(B"e$B$K%j%s%+$K$o$?$7$?$$$b$Ne(B
LDFLAGS e$B$$$D$G$b$o$?$7$?$$$b$Ne(B
e$B$3$Ne(BLDFLAGSe$B$NDj5A$O!”$3$l$G@5$7$$$G$7$g$&$+e(B?

XLDFLAGSe$B$O<B9T%U%!%$%k$r:n$k$H$-!"$+$Je(B?
$(LIBRUBY_SO)e$B$r:n@.$9$k$H$-$K!“e(BLDFLAGSe$B$,H?1G$5$l$F$*$i$:!”$$$D$G$bEO$;e(B
e$B$F$J$$$h$&$K8+$($^$9!#e(B

e$B<B$O!"e(Blibruby.soe$B$N:n@.;~$Ke(BRPATH(-Wl,-R)e$B$,EO$C$F$$$J$$$3$H$K5$$,$D$-$^e(B
e$B$7$?!#e(B

e$B6bK$G$9!#e(B
e$B$?$S$?$S$9$_$^$;$s!#e(B
1.9e$B$K$O$9$G$Ke(Bcomiite$B$5$l$F$$$?$N$G$9$M!#e(B
e$B$I$&$b$"$j$,$H$&$4$6$$$^$9!#e(B

e$B$<j?t$r$$+$1$7$F?=$7$o$1$J$$$N$G$9$,!"e(BLDFLAGSe$B$Ne(BPatche$B$,e(B1.8e$B$K$bF~$C$F$$$k$N$G!"e(B
1.8e$B$b$*4j$$$G$-$^$9$G$7$g$&$+e(B?

e$B$h$m$7$/$*4j$$$$$?$7$^$9!#e(B

06/10/31 e$B$Ke(B Yutaka K.[email protected]
e$B$5$s$O=q$-$^$7$?e(B:

金本です。
お世話になっています。
返事が遅くなってしまい申し訳ありません。

-brtlというオプションについて言及し忘れていたのですが、
これもXLDFLAGSに入れられます。
今回の元になったパッチがLDFLAGSがユーザに書き換えられる
ことを示唆していそうなので、LDFLAGSから全部追い出した方がいいのかと
思っていました。
また、ライブラリのリンク時は-Gオプションがこれを含んでいます。
ただし、-brtlをXLDFLAGSに入れてしまうと、なかださんのパッチのように、
LIBRUBY_DLDFLAGSにXLDFLAGSを入れると-Gで暗黙ではいるものと、
-brtlがかぶってしまいます。
確かに-bE:ruby.impを何度も書かなくてすむのでそうしたいのですが、
何度も書く以外の方法を思いつきませんでした。
一応この時点でのまとめたpatchを作ってみました。添付しておきます。
PREINSTALLの削除ありがとうございます。

LDFLAGS いつでもわたしたいもの
このLDFLAGSの定義は、これで正しいでしょうか?

XLDFLAGSは実行ファイルを作るとき、かな?
$(LIBRUBY_SO)を作成するときに、LDFLAGSãŒåæ˜ ã•ã‚Œã¦ãŠã‚‰ãšã€ã„ã¤ã§ã‚‚æ¸¡ã›
てないように見えます。
確かにそうなっています。見落としていました。

よろしくお願いいたします。

In message [email protected]
on Sat, 28 Oct 2006 23:22:17 +0900,
Takahiro K. [email protected] wrote:

e$B$7$?!#e(B
e$B7k6I!"0J2<$N$h$&$J%Q%C%A$re(B1.8.5e$B$K2C$($^$7$?!#e(B(e$B9THV9f$O<B:]$H$O$:$l$F$$e(B
e$B$k$G$7$g$&!#e(B)

— configure.orig 2006-08-25 17:34:16.000000000 +0900
+++ configure
@@ -19017,8 +19225,10 @@ fi
if test “$enable_rpath” = yes; then
if test “$GCC” = yes; then
LIBRUBYARG_SHARED='-Wl,-R -Wl,$(libdir) -L$(libdir) -L.
'“$LIBRUBYARG_SHARED”

  •   LIBRUBY_DLDFLAGS='-Wl,-R -Wl,$(libdir) -L$(libdir) -L. 
    

‘“$LIBRUBY_DLDFLAGS”
else
LIBRUBYARG_SHARED=’-R $(libdir) -L$(libdir) -L.
'“$LIBRUBYARG_SHARED”

  •   LIBRUBY_DLDFLAGS='-R $(libdir) -L$(libdir) -L. 
    

'“$LIBRUBY_DLDFLAGS”
fi
fi

e$B6bK$G$9!#e(B

e$BEY=E$J$k<:Ni?=$7Lu$"$j$^$;$s!#e(B
1.8e$B$K$be(BCommite$B$7$F$"$C$?$3$H$r3NG’$7$^$7$?!#e(B
e$B$H$j$"$($:8=>u$GMM;R8+$5$;$F$$$?$@$-$^$9!#e(B
e$B$<j?t$r$$+$1$7$F$I$&$b$9$_$^$;$s$G$7$?!#e(B