3

我从官方 git mirror获得了 ruby​​ 源代码,然后查看了ruby_1_9_2分支。

git 克隆 http://github.com/ruby/ruby.git
git checkout ruby​​_1_9_2

所以,现在,我想编译 1.9.2-head。但正如您稍后会看到的,我希望有一个也适用于 1.8 的解决方案。

编译它的标准方法是:

自动配置
。/配置
制作
进行安装

这行得通,但它产生了一个仅 x86_64 的构建:

$红宝石-v
ruby 1.9.2dev(2010-06-14 修订版 28321)[x86_64-darwin10.3.0]

显然,我不关心 PPC,因为我在 10.6 上,但我想同时拥有 i386 和 x86_64,因为有些事情需要在 32 位中完成。

所以,我想知道的是:

  1. 使用 i386 和 x86_64 架构构建胖二进制文件的魔法圣歌。
  2. 我也有兴趣对我的RVM ruby​​ 版本做同样的事情。

可能是不必要的系统信息:

$ system_profiler -detailLevel mini SPSoftwareDataType | 确认'^ {6}' | 头-3
      系统版本:Mac OS X 10.6.4 (10F569)
      内核版本:达尔文 10.4.0
      64 位内核和扩展:否

$ unname -a
Darwin meaningless.local 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; 根:xnu-1504.7.4~1/RELEASE_I386 i386
4

2 回答 2

4

使用该--with-arch选项./configure

$ ./configure --with-arch=x86_64,i386

--with-arch采用逗号分隔的架构列表,Ruby 应为其构建。


由 kch 添加:

构建成功后的输出:

$文件红宝石
ruby:具有 2 种架构的 Mach-O 通用二进制文件
ruby(用于架构 x86_64):Mach-O 64 位可执行 x86_64
ruby(用于架构 i386):Mach-O 可执行 i386

$ 拱 -i386 ./ruby -v
ruby 1.9.2dev(2010-06-29 修订版 28468)[universal.i386-darwin10.4.0]

$ 拱 -x86_64 ./ruby -v
ruby 1.9.2dev(2010-06-29 修订版 28468)[universal.x86_64-darwin10.4.0]

$ ./ruby -v
ruby 1.9.2dev(2010-06-29 修订版 28468)[universal.x86_64-darwin10.4.0]
于 2010-06-29T04:55:48.790 回答
1

至于 RVM,它说你不能拥有胖二进制文件,但在包含我的补丁的这个提交中,情况并非如此。

使用最新的 rvm,您可以ruby-1.9.2-head使用与手动构建中相同的配置标志进行安装:

$ rvm install ruby​​-1.9.2-head -C --with-arch=x86_64,i386

证明它应该有效:

$ rvm 使用 1.9.2-head
信息:使用 ruby​​ 1.9.2 头

$ 文件`哪个红宝石` | perl -pe 's|^.*/||'
ruby:具有 2 种架构的 Mach-O 通用二进制文件
ruby(用于架构 x86_64):Mach-O 64 位可执行 x86_64
ruby(用于架构 i386):Mach-O 可执行 i386
于 2010-06-29T06:05:41.797 回答