丁稚な日々

Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...

[直前] [最新] [直後] [Top]

May.1,2003 (Thu)

Revision: 1.1 (May.01,2003 21:31)

May.5,2003 (Mon) 子供の日

Revision: 1.1 (May.06,2003 00:49)

May.6,2003 (Tue)

Revision: 1.1 (May.06,2003 10:30)

[Web] Matzにっき

_ 第一発見者はなひさんなのかしら?
2chのUNIX板の某スレからもリンクされてるですね。

[mswin32] 拡張ライブラリをコンパイルする

_ 以下は一般論。

  1. VC++が必要。コンパイラのバージョンは本体をコンパイルするのに使ったものと合わせるのが吉。VC5とVC6なら大丈夫な気がするけど、VC5・VC6とVC7だと問題が出るかもしれない。
    なお、1.8なら技術がある人ならMinGWでもなんとかなる。が、これをどうにかできる人ならそもそもこんな話は読まなくてもいいはず。
  2. lib/ruby/1.?/i?86-mswin32に*.hが必要。あとrbconfig.rbも。
  3. lib/mswin32-ruby16.lib(1.6系の場合)かlib/msvcrt-ruby18.liblib/msvcrt-ruby18-static.lib(1.8系の場合)が必要。
    MinGWでどうにかしたい人は*.aになるわけだけど(以下略)
  4. よそのライブラリを使うものの場合、環境変数INCLUDEにそのライブラリの*.hのある場所を含める必要がある。同様に、環境変数LIBにそのライブラリの*.libのある場所を含める必要がある。
    よくできた拡張ライブラリなら、extconf.rbの引数に--with-hoge-dirであるとか--with-hoge-include--with-hoge-libを含めることで、環境変数の設定に相当することを内部で処理してくれることもある。
  5. 比較的ありがちな問題として、インポートライブラリの名前衝突というものがあるので、少なくともよそのライブラリの*.libのあるところでコンパイルしようとか思ってはいけない。

2とか3とかは、ファイル名を除けば他のプラットフォームでも同じことが言えると思う。
4も、環境変数の話以外は他のプラットフォームでも同じ。

May.9,2003 (Fri)

Revision: 1.4 (May.09,2003 13:00)

[Web] gdbm.so

_ gdbm.soだけあって gdbm.dllもいっしょにないと駄目」(なんかURL変わりそうだなあ)に対する補足。

_ extconf.rbを編集すればgdbm.soにgdbm.dllを取り込ませることもできるというのは多少語弊があって、gdbm.soにGDBMそのもの(これも語弊がありそうだ)を取り込ませる(=スタティックにGDBMをリンクする)こともできる、というべきだったですね。
なお、jarpのGDBMバイナリを使う場合、extconf.rbを

require 'mkmf'

dir_config("gdbm")
if have_library("gdbm-static", "gdbm_open") and
   have_header("gdbm.h")
  $CPPFLAGS += "-DGDBM_STATIC "
  create_makefile("gdbm")
end

とするとスタティックリンク版のgdbm.soができます。


被捕捉アンテナ類
[\ay antenna (testing)] [Ant] [Antenna-Julia] [LayserあんてなV2] [nAntenna] [nuance de Antenna] [Rabbit's Antenna] [Read List] [Ruby hotlinks 五月雨版 (るるりん。)] [してたま (私的アンテナ with たまてばこ)] [ただのあんてな] [ちゃらんぽらん] [でこぽんリンク] [なよろアンテナ] [にっきトレーサー] [偽善者あんてな - 2nd season -] [湘南日記放送局(SDB)] [はてなの各アンテナ]