blob: 3ca523bddedcda86ac746761fe4411e82cdcfb8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
.\" README - -*- Text -*- created at: Wed Aug 3 11:57:36 JST 1994
コンパイル・インストール
1. configureを実行してMakefileを生成する.
2. (必要ならば)defines.hを編集する.
3. makeを実行してコンパイルする
4. make install
もし, コンパイル時にエラーが発生した場合にはエラーのログとマ
シン, OSの種類を含むできるだけ詳しいレポートを作者に送ってい
ただきたい.
機能追加
Cコードを書くことによって, 簡単にrubyに機能を追加できる.
そのおおまかな手順は以下の通りである.
* 関数的メソッドを追加する場合
(1) Cで関数を書く
(2) rb_define_method()でカーネルクラスのメソッドとして関
数をrubyに登録する関数を書く
(3) init.cを編集して, 登録する関数を呼び出す
* クラスを追加する場合
(1) クラスを設計する
(2) メソッドをCで記述する
(3) rb_define_class()でクラスを生成するコードを書く
(4) rb_define_method()でメソッドを登録するコードを書く
(5) init.cを編集して, 初期化する関数を呼び出す
詳しくはC-IFを参照.
移植
UNIXであればconfigureがほとんどの差異を吸収してくれるはず
だが, 思わぬ見落としがあった場合(あるに違いない), 作者にレ
ポートすれば, 解決できるかも知れない.
アークテクチャにもっとも依存するのはGC部である. rubyのGCは
対象のアーキテクチャがsetjmp()によって, 全てのレジスタを
jmp_bufに格納することと, jmp_bufとスタックが32bitアライン
メントされていることを仮定している. 前者が真実でない場合の
移植は困難を極めるだろう. 後者は割と簡単に解決できる. gc.c
のスタックをマークする部分にアラインメントのバイト数だけず
らしてマークするコードを追加するだけで済む.
sparc以外のレジスタウィンドウを持つCPUでは, レジスタウィン
ドウをフラッシュするコードを追加する必要があるかも知れない.
|