0

GoogleSketchUpでのRubyバージョンの更新についてSuperUserに質問しました。標準のOSXディストリビューションに同梱されているRubyと、RVMまたはMacPortsによってインストールされているRubyには何か違いがあるようです。RVMまたはMacPortsのRuby1.9.1を使用しようとすると、次のエラーメッセージが表示されます。

Exception Type:  EXC_BREAKPOINT (SIGTRAP)

Dyld Error Message:
  Library not loaded: @executable_path/../Frameworks/Ruby.framework/Versions/A/Ruby
  Referenced from: /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/SketchUp
  Reason: no suitable image found.  Did find:
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: mach-o, but wrong architecture
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: mach-o, but wrong architecture
    /usr/lib/Ruby: not a file

Model: MacBookPro7,1, BootROM MBP71.0039.B05, 2 processors, Intel Core 2 Duo, 2.4 GHz, 4 GB, SMC 1.62f5

ただし、Ruby1.8.7で動作します。/System/Library/Frameworks/Ruby.framework/


UPDATE1

Alexが説明したように、Rubyをi386アーキテクチャーでコンパイルする必要があります。MacPortsとRVMでそれを行うことはできますが、さまざまなエラーが原因で、どの方法もうまくいきませんでした。

  1. ユキヒョウのMacPortsでi386ビルドを予測する方法は?
  2. 内部設定ファイル
  3. ダーウィンOS

Ruby 1.9.2-rc2だから私はソースからコンパイルすることにしました

$ ARCHFLAGS="-arch i386"  CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure  --with-arch=i386
$ make && sudo make install

対応するファイルをSketchUpにコピーします

$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/Versions/A/
$ rm -r Headers Ruby
$ cp /usr/local/bin/ruby Ruby
$ mkdir Headers
$ cp /usr/local/include/ruby-1.9.1/i386-darwin10.4.0/ruby/config.h Headers/
$ cp /usr/local/include/ruby-1.9.1/ruby.h Headers/
$ cp -r /usr/local/include/ruby-1.9.1/ruby/* Headers/
$ ls Headers
backward/   defines.h   dl.h        intern.h    missing.h   re.h        ruby.h      util.h      vm.h
config.h    digest.h    encoding.h  io.h        oniguruma.h regex.h     st.h        version.h

今回は次のメッセージがあります

Dyld Error Message:
  Library not loaded: @executable_path/../Frameworks/Ruby.framework/Versions/A/Ruby
  Referenced from: /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/SketchUp
  Reason: no suitable image found.  Did find:
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
    /usr/local/lib/Ruby: not a file
    /usr/lib/Ruby: not a file
4

2 に答える 2

1

これは解決されましたか?あなたのタイトルの一般的な質問に答えるために、それが私がこれをクリックした理由です:

System Ruby(1.8.7、私は思う)はプリロードされており、MacPortsやRVMによって上書きされることはありません。MacPortsはデフォルトで別のディレクトリに書き込み、ターミナルはその新しいインストールへの解決を開始し、システムRubyを未使用のままにします。RVMはRubyの独自の仮想インストールを作成し、を使用してそれらとシステムRubyを切り替えることができます$ rvm use

于 2011-01-12T02:03:59.290 に答える
1

2 つのアーキテクチャ (おそらく 32 ビット Intel と PPC) 用のバージョンのRubyライブラリが sketchup ディレクトリにあり、3 番目の異なるアーキテクチャ (おそらく 64 ビット) で構築された Ruby バイナリを使用しようとしているようです。インテルだと思います)。archTerminal.App シェル プロンプトでコマンドを使用して確認できます。

これが実際に問題であることが判明した場合は、32 ビット Intel CPU をターゲットにして、ソースから 1.9 ruby​​ をビルドしてみてはいかがでしょうか? (32 ビット Intel CPU 用にビルドされた Mac 用の事前にパッケージ化された ruby​​ 1.9 については知りません。もちろん、私が知らないものもあるかもしれません!-)。

于 2010-07-25T17:14:37.410 に答える