SQLite3ビルド失敗(拡張関数の静的リンク)
ビルドには成功したが、拡張関数の静的リンクはされていない。
成果物
情報源
ということらしい。ので、ビルドしてみよう。
ビルド用スクリプト
ポイントはSQLITE_CORE
コンパイルオプション。
SCRIPT_DIR=$(cd $(dirname $0); pwd) cd "$SCRIPT_DIR" # ========== ビルド ========== # ソースコード取得 wget https://www.sqlite.org/2019/sqlite-src-3290000.zip unzip sqlite-src-3290000.zip # 合併(amalgamation)ソースコード取得 wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz tar xf sqlite-autoconf-3290000.tar.gz # 合併にあるいくつかのファイルをソース側へコピーする cp ./sqlite-autoconf-3290000/sqlite3.c ./sqlite-src-3290000/sqlite3.c cp ./sqlite-autoconf-3290000/sqlite3.h ./sqlite-src-3290000/sqlite3.h cp ./sqlite-autoconf-3290000/shell.c ./sqlite-src-3290000/shell.c # ソースのディレクトリへ移動 cd sqlite-src-3290000 # オプション付与 ./configure \ --enable-fts4 \ --enable-fts5 \ --enable-json1 \ --enable-update-limit \ --enable-geopoly \ --enable-rtree \ --enable-session \ LIBS="-lz" \ LDFLAGS="`icu-config --ldflags`" \ CFLAGS="`icu-config --cppflags` -DHAVE_READLINE=1 -DSQLITE_ALLOW_URI_AUTHORITY=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_DBPAGE_VTAB=1 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_ENABLE_DESERIALIZE=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_ICU=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_MEMSYS3=1 -DSQLITE_ENABLE_PREUPDATE_HOOK=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_SESSION=1 -DSQLITE_ENABLE_SNAPSHOT=1 -DSQLITE_ENABLE_STMTVTAB=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_INTROSPECTION_PRAGMAS=1 -DSQLITE_USE_ALLOCA=1 -DSQLITE_USE_FCNTL_TRACE=1 -DSQLITE_HAVE_ZLIB=1 -DSQLITE_CORE=1" # ビルド time make # ========== 確認 ========== # オプション確認 ./sqlite3 :memory: "pragma compile_options;" # delete文内でlimit句を使っても「」エラーが出ないことを確認 ./sqlite3 :memory: \ "create table T(A integer);" \ "delete from T limit 1;" # limitで指定した上限までしか削除されないことを確認 ./sqlite3 :memory: \ "create table T(A integer);" \ "insert into T values(0);" \ "insert into T values(1);" \ "delete from T limit 1;" \ "select count(*) from T;" # SQLITE_CORE オプションで拡張関数を静的ロードできたか確認(できなかった) ./sqlite3 :memory: \ "select count(*) from pragma_function_list;" ./sqlite3 :memory: \ "select name from pragma_function_list order by name;"
確認
コンパイルオプションにCORE
がない。
ALLOW_URI_AUTHORITY COMPILER=gcc-6.3.0 20170516 ENABLE_COLUMN_METADATA ENABLE_DBSTAT_VTAB ENABLE_FTS4 ENABLE_FTS5 ENABLE_GEOPOLY ENABLE_ICU ENABLE_JSON1 ENABLE_MEMSYS3 ENABLE_PREUPDATE_HOOK ENABLE_RTREE ENABLE_SESSION ENABLE_SNAPSHOT ENABLE_STMTVTAB ENABLE_UNKNOWN_SQL_FUNCTION ENABLE_UNLOCK_NOTIFY ENABLE_UPDATE_DELETE_LIMIT HAVE_ISNAN THREADSAFE=1 USE_ALLOCA USE_FCNTL_TRACE
関数の数が、このビルドをする前と同じ。拡張関数が追加された分だけ増えて欲しかったのだが。
133
どうやら失敗したようだ……。
所感
無念。いちいちライブラリをコンパイルするの面倒だから一発でできないかと思ったのだが……。
対象環境
- 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学習 Geopoly(2次元ベクタ画像の生成)
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3学習 謎と名前
- SQLite3学習 構文まとめ
- SQLite3関数の一覧と分類
- SQLite3コア関数まとめ
- SQLite3窓関数まとめ
- SQLite3非組込関数一覧
- SQLite3非組込関数(未分類)