Project

General

Profile

Bug #1305

target_os が darwin 系の場合に動的リンク不可能な実行形式が生成される場合がある

Added by mrkn (Kenta Murata) almost 11 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 1.9.2dev (2009-03-20 trunk 23011) [i386-darwin9.6.0]
Backport:

Description

=begin
configure.in の --enable-shared を処理する部分で、target_os が darwin 系の場合、LIBRUBY_DLDFLAGS が

     if test "$load_relative" = yes; then
         libprefix='@executable_path/..'
     else
         libprefix='$(libdir)'
     fi
     LIBRUBY_DLDFLAGS='-install_name '${libprefix}'/lib/lib$(RUBY_SO_NAME).dylib'

このように設定される。
そのため、$load_relative が no の場合に共有ライブラリの位置が
$(libdir)/lib/lib$(RUBY_SO_NAME).dylib
という不正な値になってしまう。
そして、最終的に生成される実行形式は動的リンクを解決できない。

これは、

     if test "$load_relative" = yes; then
         libprefix='@executable_path/../lib'
     else
         libprefix='$(libdir)'
     fi
     LIBRUBY_DLDFLAGS='-install_name '${libprefix}'/lib$(RUBY_SO_NAME).dylib'

とするのが正解であると思われる。
=end


Files

configure.in.darwin-dldflags (877 Bytes) configure.in.darwin-dldflags mrkn (Kenta Murata), 03/20/2009 06:27 AM

History

#1

Updated by nobu (Nobuyoshi Nakada) almost 11 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r23014.
=end

Also available in: Atom PDF