概要
apt や yum でインストールできるライブラリは特に気にする必要はありませんが場合によってはそれらを使ってライブラリをインストールできないことがあると思います
.h
ファイルと .so
ファイルが配布されておりそれらを使って NativeExtensions を開発したいことはあると思います
今回はそのような場合に .h
と .so
ファイルを参照する方法を紹介します
環境
- CentOS 7.5.1804
- Ruby 2.5.0p0
extconf.rb を編集する
extconf.rb
は Makefile を作成するためのファイルです
事前に関数の存在チェックやヘッダファイルの存在チェックができます
ここで自分が作成したオリジナルのライブラリのチェックなどを行います
require "mkmf"
abort "missing malloc()" unless have_func "malloc"
abort "missing free()" unless have_func "free"
dir_config('mylib', '/usr/lib/mylib/include', '/usr/lib/mylib/lib64')
if have_header("mylib.h") and have_library('mylib')
create_makefile "mylib/mylib"
end
あとはヘッダファイルを /usr/lib/mylib/include/mylib.h
に配置し so ファイルを /usr/lib/mylib/lib64/mylib.so
に配置すれば OK です
もし配置していない場合は extconf.rb の実行中にエラーになるため NativeExtensions のインストールに失敗します
また上記のように書いておけば include と lib64 のパスを自分で指定することもできるようになります
ruby extconf.rb --with-mylib-include=/path/to/include --with-mylib-lib=/path/to/lib64
こんな感じです
これで Makefile が作成されるのであとは make すれば NativeExtensions が作成されます
0 件のコメント:
コメントを投稿