拡張ライブラリをビルドして動的ロードする。
成果物
ダウンロード&ビルド
SQLite3本体と拡張ライブラリをダウンロード&ビルドする。
wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz tar xf sqlite-autoconf-3290000.tar.gz wget https://www.sqlite.org/contrib/download/extension-functions.c?get=25 mv ./extension-functions.c?get=25 ./extension-functions.c gcc -shared -I "./sqlite-autoconf-3290000" -o libsqlitefunctions.so extension-functions.c
libsqlitefunctions.so
ファイルが出力される。これが拡張ファイル。あとはこれを動的ロードすることで数学関数が使える。
使ってみる
sqlite3
.load ./libsqlitefunctions.so
select sin(1);
0.841470984807897
使えた。
もしロードできなければ以下エラーになる。
Error: no such function: sin
情報源
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習 俯瞰まとめ
- SQLite3学習 環境構築まとめ
- SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)
- SQLite3学習 ドットコマンドまとめ
- SQLite3学習 JSON拡張まとめ
- SQLite3学習 FTSまとめ(ICU, MeCab)
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3謎 主キーの型をintにするとinsertで値を省略したらNULLになってしまう
- SQLite3謎 values()構文