これだとだめというところまでわかった。
at_exitがテスト開始前におきてしまう。わかってないなぁ。>俺
Index: test/fiddle/helper.rb =================================================================== --- test/fiddle/helper.rb (revision 27776) +++ test/fiddle/helper.rb (working copy) @@ -38,6 +38,30 @@ when /bsd|dragonfly/ libc_so = "/usr/lib/libc.so" libm_so = "/usr/lib/libm.so" +when /aix/ + require 'tmpdir' + tmpdir=Dir.mktmpdir + at_exit {FileUtils.remove_entry_secure tmpdir} + cobjs=%w!strcpy.o! + mobjs=%w!floats.o sin.o! + funcs=%w!sin sinf strcpy! + pwd=Dir.pwd + Dir.chdir tmpdir + %x!ar x /usr/lib/libc.a #{cobjs.join(' ')}! + %x!ar x /usr/lib/libm.a #{mobjs.join(' ')}! + %x!echo "#{funcs.join("\n")}\n" > dltest.exp! + require 'rbconfig' + if RbConfig::CONFIG["GCC"] = 'yes' + lflag='-Wl,' + else + lflag='' + end + flags="#{lflag}-bE:dltest.exp #{lflag}-bnoentry -lm" + objs=cobjs+mobjs + %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{tmpdir}/libdltest.so #{objs.join(' ')} #{flags}! + Dir.chdir pwd + + libc_so = libm_so = "#{tmpdir}/libdltest.so" else libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/ libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/
かみさんが入院して明日は遠足のつきそいのため、今日はここまで。