それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

C言語のDSOを作る。ライブラリ自作してRubyで使う。

ちょっとしたテスト(Ruby/DL)のテストで、自作のDSO(共有C言語ライブラリ)作る必要があったので、ちょっと調べた。その結果をまとめる。

手順

自作ライブラリのインストール先ディレクトリの作成:
mkdir ~/lib		# ライブラリオブジェクトの置き場所
mkdir ~/include	# ライブラリヘッダの置き場所
export C_INCLUDE_PATH=~/include
export CPLUS_INCLUDE_PATH=~/include
export LIBRARY_PATH=~/lib
export LD_LIBRARY_PATH=~/lib
ライブラリの作成と利用
% gcc ライブラリソース.c -o libライブラリ.so -shared
% mv libライブラリ.so ~/lib/
% mv ライブラリヘッダ.h ~/include/

Rubyから使う

require 'dl'
module LIBMY
    LIB = DL.dlopen('/home/takuya/libmy.so')
    SYM ={
        :myfunction => LIB['myfunction','IPP']
    }
end
ruby/dlについてはココを参照

http://www.jbrowse.com/text/rdl_en.html