Raspberry pi (OS: Raspbian - wheezy) でSWIGのテスト。
こんなCファイルを作成。
hoge.c(名前は適当でいい)
void hoge(int num){ printf("Hello, hoge!\n"); } int main() { hoge(0); }
インターフェースファイル(っていうのかな?)を作る。
(初期化しないときはイニシャライザは要らない)
hoge.i
%module hoge %{ extern void setup_hoge(int num); extern void hoge(int num); %} %init %{ extern void setup_hoge(int num); %} extern void hoge(int num);
SWIGでラッパー関数を作成する。
$ swig -ruby hoge.i
extconf.rbファイルの作成
extconf.rb
require 'mkmf' create_makefile('hoge')
Makefileの作成
$ ruby extconf.rb
soファイルの作成
$ make
出来上がったhoge.soファイルを
/home/pi/gpiotest/test# cp hoge.so /usr/lib/ruby/1.9.1/arm-linux-eabihf/
に移動しておく。
テスト。
# irb irb(main):001:0> require 'hoge' => true irb(main):002:0> ho = Hoge => Hoge irb(main):003:0> ho.hoge(0) Hello, hoge! => nil