目前,Google SketchUp for Mac有Ruby 1.8.5,我觉得有点过时了。我可以通过以下命令将Ruby更新为1.8.7 (OSX的版本)
$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/Versions/Current
$ ls
Headers/ Resources/ Ruby
$ ls Headers/
config.h defines.h intern.h missing.h ruby.h
$ rm -r Headers
$ ln -s /System/Library/Frameworks/Ruby.framework/Headers
$ ln -fs /System/Library/Frameworks/Ruby.framework/RubySketchUp启动时没有问题,Ruby显示了1.8.7版本。
1.9.2
现在,我尝试更进一步,更新到1.9.2-rc2。Google SketchUp需要i386二进制文件,可以通过以下命令生成
$ cd ~/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/
$ rm 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当我尝试启动SketchUp时,我会得到以下错误报告
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: 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
Model: MacBookPro7,1, BootROM MBP71.0039.B05, 2 processors, Intel Core 2 Duo, 2.4 GHz, 4 GB, SMC 1.62f5你能告诉我为什么吗?
UPDATE1
丹·拉斯本进行了一些测试,发现了以下内容
在Win32上,当我试图让Sketchup加载任何1.9.x时,我得到了ruby函数"rb_set_kcode“的一个”入口点未找到“,该函数已不在1.9.x中(它已被重命名,并且Ruby没有将旧名称化名为新名称)。 基本上,在加载Ruby解释器之后,Sketchup调用rb_set_kcode将字符编码设置为UTF8。它适用于1.8.x分支中的任何Ruby,但在1.9.x中,Ruby项目完全重新设计了字符编码,并为所有C函数提供了新的标识符,并增加了更多的函数。 1.9.x和Sketchup的解决方案似乎是Sketchup需要“”,这意味着Boulder中的Google会改变代码。
发布于 2010-07-26 13:06:16
C级API在1.9.1中发生了变化。请注意,gems的路径表示API兼容性: 1.8行为.../1.8/...,1.9.2行为.../1.9.1/...。
这使得在不重新编译的情况下升级变得非常困难。
您可以使用require "backports";这将使您了解1.9.x的大部分新方法,而不是新的语法或字符串编码。
https://stackoverflow.com/questions/3333163
复制相似问题