最近看到有人在交叉编译ruby的时候似乎碰到了许多问题(http://www.iteye.com/topic/322718
)。其实交叉编译ruby原本应该是很简单的一个过程,希望这个“傻瓜指南”可以让新手也能够轻而易举地进行操作。
注 1: 本文以Arm-linux为目标平台,其他平台需要调整到对应的工具链。
注 2: 本文的编译平台是Linux (Debian/Ubuntu),如果在Cygwin下进行交叉编译可能会遇到困难。编译之前请确定bison和flex这两个程序已安装好。
交叉编译ruby-1.8.6:
第1步: 准备
mkdir -p ~/build
mkdir -p ~/bin
第2步: 下载交叉编译工具
cd ~/bin
wget http://www.codesourcery.com/gnu_toolchains/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
tar -jxvf arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
第3步: 下载ruby源码
cd ~/build
wget ftp://www.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.bz2
tar -jxvf ruby-1.8.6.tar.bz2
第4步: 打补丁
把本文附件中的ruby-configure.patch.tar.bz2和fakeruby.patch.tar.bz2下载到~/build中,并解压:
tar -jxvf ruby-configure.patch.tar.bz2
tar -jxvf fakeruby.patch.tar.bz2
cd ruby-1.8.6
patch < ../ruby-configure.patch
patch < ../fakeruby.patch
第5步: 配置
cd ~/build/ruby-1.8.6
export CC=~/bin/arm-2008q3/bin/arm-none-linux-gnueabi-gcc
autoreconf
mkdir -p /opt/arm-linux-ruby
./configure --host=arm-linux --target=arm-linux --disable-pthread --enable-shared --prefix=/opt/arm-linux-ruby 2>&1 | tee config.out
第6步: 编译,安装
make 2>&1 | tee make.out
make install 2>&1 | tee install.out
大功告成。现在,在/opt/arm-linux-ruby下可以看到交叉编译好的ruby,你可以根据需要自己再裁减,或者用strip来对可执行文件与库文件进行“廋身”,然后下载到目标板上即可。
交叉编译ruby-1.8.7-p72:
1. 首先,要对codesourcery的交叉编译工具进行一个小改动:
把本文附件fix-compiler.rb.tar.bz2解开,然后运行:
ruby fix-compiler.rb ~/bin/arm-2008q3/bin
2. 对ruby源码打补丁时,除了文中提到的两个补丁外,还需打上extmk.patch
3. 在配置1.8.7-p72之前,把交叉工具的路径添入当前路径:
export PATH=~/bin/arm-2008q3/bin:$PATH
其余步骤和1.8.6版本一样不再重复。
交叉编译ruby-1.9.1-p0:
基本步骤与交叉编译ruby-1.8.7-p71一样,只是那个extmk.patch不用打了,1.9.1里面已经修正了这个错误。ruby-configure.patch和fakeruby.patch这两个补丁仍然需要打。真不敢相信, setpgrp (被ruby-configure.patch修正) 和fake-ruby(被fakeruby.patch修正) 这两个bug从ruby 1.8.2开始就存在,一直到ruby 1.9都还没被修正
另外还需注意的是,在交叉编译ruby-1.9之前,编译机器上必须先安装ruby-1.9,确保在编译之前ruby -v输出是版本1.9。
-----------------------------------
Acknowledgement: 本文采用的'ruby-configure.patch'补丁来自于Debian。
分享到:
- 2009-02-05 11:35
- 浏览 2743
- 评论(1)
- 论坛回复 / 浏览 (0 / 3965)
- 查看更多
相关推荐
编译ruby用到依赖模块(for windows)~~~~
Ruby用户初级学习指南
《Ruby用户指南》中文版 《Ruby用户指南》中文版
NULL 博文链接:https://raylinn.iteye.com/blog/650850
Ruby 学习指南.rar
RuboCop是Ruby静态代码分析器,基于社区Ruby风格指南
Ruby-Ruby样式指南带有linter和自动代码修复程序
ruby-build - 编译和安装Ruby
RUBY基础入门指南,RUBY基础入门指南,RUBY基础入门指南
Ruby on Rails中文指南
本 Ruby 风格指南推荐了最佳实践,以便现实世界的 Ruby 程序员可以编写可由其他现实世界的 Ruby 程序员维护的代码。一个反映现实世界使用情况的风格指南被使用,而一个坚持被它应该帮助的人拒绝的理想的风格指南则有...
原文在此http://guides.ruby-china.org/index.html 我只是把html拷贝到word里面罢了 然而只拷贝到了Rails 安全指南这一章,后面的太多就没拷贝了 初学者只需打印到368页即可
Ruby Hacking Guide是一本书,解释了ruby解释器(Ruby语言的官方C实现)在内部如何工作。 要完全理解它,您需要具有C和Ruby的丰富知识。
Rails 官方指南文档 5.0.1 中文版
Ruby样式指南 这是Airbnb的Ruby样式指南。 它的灵感来自和。 Airbnb还维护着。 目录 空格 缩进 使用带有两个空格缩进的软标签。 [] 缩进when深如case 。 [] case when song . name == 'Misty' puts 'Not again!...
你可以从 Ruby 的官方网站下载适合你操作系统的安装包,并按照安装指南进行安装。安装完成后,你可以在命令行中输入 ruby -v 来检查 Ruby 是否成功安装以及安装的版本。 三、学习基础语法 变量和数据类型:Ruby ...
这份文档是Ruby编程入门指南,主要内容包括: 1. 字符串的几种表示方式(单引号、双引号、多行字符串)及其区别。 2. 符号(Symbol)的概念及作用,如用于Hash的键。 3. Ruby中"一切皆对象"的理念,数字、布尔值、类、nil...
ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码