バベルの図書館は完成しない

Extended outer memory module
for my poor native memory.

Posts:
2022/02/13 クラビスの CTO になりました
2020/09/28 gendoc という YAML からドキュメントを生成するコマンドを作った
2020/09/13 ISUCON10 の予選を 7 位で通過した
2019/12/01 Puma の内部構造やアーキテクチャを追う
2019/05/27 Golang の正規表現ライブラリの処理の流れをざっくり掴む
2019/04/29 InnoDB の B+Tree Index について
2019/04/29 InnoDB における index page のデータ構造
2019/04/28 InnoDB はどうやってファイルにデータを保持するのか
2019/01/06 Designing Data-Intensive Applications を読んでいる
2019/01/03 年末年始に読んだ本について、など
2019/01/01 Ruby から ffi を使って Rust を呼ぶ
2018/11/10 ブラウザにおける状態の持ち方
2018/07/01 Rust で web アプリ、 或いは Rust における並列処理
2018/05/14 なぜテストを書くのか
2018/05/13 Rust で wasm 使って lifegame 書いた時のメモ
2018/03/12 qemu で raspbian のエミュレート(環境構築メモ)
2018/03/12 qemu で xv6 のエミュレート(環境構築メモ)
2018/03/03 Ruby の eval をちゃんと知る
2018/02/11 Web のコンセプト
2018/02/03 Rspec のまとめ
2018/02/03 Ruby を関数型っぽく扱う

msgpack-ruby を自分でビルドしてみる

native extension を利用している gem をちゃんと読んだことなかったなと思って、 RubyKaigi でセッションを聞いたというのもあるし msgpack-ruby を読んでみている。

だけど JRuby や Rubinius をサポートしていてターゲットによる if 文が多かったので、その辺のコードを全部消した上で自分でビルドしてみた。

https://github.com/furuhama/msgpack-ruby/tree/just_latest_cruby

ビルドも具体的にどんなことをしているのか知らなくて、今回初めて手動でやってみた。

手順としては

$ cd /path/to/msgpack-ruby

$ ruby ext/msgpack/extconf.rb

$ make

$ mv msgpack.bundle ./lib/msgpack

とかでできると思う。

最後の mv がうまくやれば不要なんじゃないかって思っているんだけど、 Makefile とかよくわからないのでとりあえずこれで。

irb なりを開いた上で

> $LOAD_PATH.push File.expand_path('./lib')
> require 'msgpack'

とかすればビルドしたものを使えるかな。

=====

rake-compiler という gem を調べていたらこれが用意してくれる rake task を使えば上で一つ一つ行なった操作を簡単に全部できることに気づいた。

$ rake native gem

とすれば ok 。

(しかし僕の場合なぜか x86_64-darwin18 というターゲットを認識できずに途中でエラーになったので define_cross_platform_tasks 'x86_64-darwin18' を無理やり足すということをして凌いだ…理由はちゃんと調べていないので謎だけど…。)

2019/05/30 17:24
tags: minipost
This site is maintained by furuhama yusuke.
from 2018.02 -