sqlite3インストール時にtclsqlite.cでエラー

DBD::SQLiteで作成したDBを、Unixコマンドライン上から扱う必要があり、sqlite3クライアントをインストールしました。


このとき、make で以下のエラーが発生してつまづきました。

 gcc -g -O2 -DOS_UNIX=1 -DHAVE_USLEEP=1 -DHAVE_FDATASYNC=1 -I.
-I../sqlite-3.3.7/src -DNDEBUG -DTHREADSAFE=0
-DSQLITE_THREAD_OVERRIDE_LOCK=-1 -DSQLITE_OMIT_CURSOR -c
../sqlite-3.3.7/src/tclsqlite.c  -fPIC -DPIC -o .libs/tclsqlite.o
../sqlite-3.3.7/src/tclsqlite.c: In function `DbUpdateHandler':
../sqlite-3.3.7/src/tclsqlite.c:341: warning: passing arg 3 of
`Tcl_ListObjAppendElement' makes pointer from integer without a cast
../sqlite-3.3.7/src/tclsqlite.c: In function `tclSqlFunc':
../sqlite-3.3.7/src/tclsqlite.c:427: warning: passing arg 1 of
`Tcl_NewByteArrayObj' discards qualifiers from pointer target type
../sqlite-3.3.7/src/tclsqlite.c:435: warning: assignment makes pointer
from integer without a cast
../sqlite-3.3.7/src/tclsqlite.c:493: `Tcl_WideInt' undeclared (first
use in this function)
../sqlite-3.3.7/src/tclsqlite.c:493: (Each undeclared identifier is
reported only once
../sqlite-3.3.7/src/tclsqlite.c:493: for each function it appears in.)
../sqlite-3.3.7/src/tclsqlite.c:493: parse error before `v'
../sqlite-3.3.7/src/tclsqlite.c:494: `v' undeclared (first use in this function)
../sqlite-3.3.7/src/tclsqlite.c: In function `DbObjCmd':
../sqlite-3.3.7/src/tclsqlite.c:696: warning: passing arg 3 of
`Tcl_GetIndexFromObj' from incompatible pointer type
../sqlite-3.3.7/src/tclsqlite.c:1341: warning: passing arg 2 of
`Tcl_GetVar2Ex' discards qualifiers from pointer target type
../sqlite-3.3.7/src/tclsqlite.c:1363: `Tcl_WideInt' undeclared (first
use in this function)
../sqlite-3.3.7/src/tclsqlite.c:1363: parse error before `v'
../sqlite-3.3.7/src/tclsqlite.c:1364: `v' undeclared (first use in
this function)
../sqlite-3.3.7/src/tclsqlite.c:1414: warning: passing arg 1 of
`Tcl_NewByteArrayObj' discards qualifiers from pointer target type
../sqlite-3.3.7/src/tclsqlite.c:1422: warning: assignment makes
pointer from integer without a cast
../sqlite-3.3.7/src/tclsqlite.c:1662: parse error before `rowid'
../sqlite-3.3.7/src/tclsqlite.c:1667: `rowid' undeclared (first use in
this function)
../sqlite-3.3.7/src/tclsqlite.c:1883: warning: passing arg 3 of
`Tcl_GetIndexFromObj' from incompatible pointer type
../sqlite-3.3.7/src/tclsqlite.c: In function `DbMain':
../sqlite-3.3.7/src/tclsqlite.c:2069: warning: passing arg 2 of
`Tcl_CreateObjCommand' discards qualifiers from pointer target type
make: *** [tclsqlite.lo] Error 1


tcl(ティクル)がよく分からないのと、必要でもないのでconfigオプションにて外してインストールしました。
分からないから放置というなんともかんともですが、うんまぁいいや。

$ wget http://www.sqlite.org/sqlite-3.3.7.tar.gz
$ tar xvfz sqlite-3.3.7.tar.gz
$ mkdir bld
$ cd bld
$ ../sqlite-3.3.7/configure --disable-tcl
$ make
$ sudo make install
$ make clean

※ bldディレクトリを作成して、そこでconfigureってのは、ソースに同梱されていたREADMEをそのまま流用しています。


ちなみにsqliteクライアントのバージョンについて補足しておきます。
公式サイトダウンロードページにいくと、以下の2種類があります。

  1. sqlite3-3.3.7
  2. sqlite-2.8.17


これは、以下の関連性があり、それぞれの互換性はないのでご注意あれ。

sqliteバージョン DBD::SQLiteバージョン
sqlite3 1.0.0 以上
sqlite 0.31(fix)以下


詳しくはChangesをご覧ください。