SQLite3でheader and source version mismatch
Redhat上でSQLiteの最新版が必要になり、ソースからインストール。yumで入ってくるのが3.6.20でとあるソフトではこれじゃ古いんですね。
SQLiteのサイトから最新版をダウンロードして、configure,make,make install。
configureやmakeはエラーなく動作したのですが、実際にインストールされたsqlite3を動かしてみるとこんなエラー。
SQLite header and source version mismatch 2009-11-04 13:30:02 eb7a544fe49d1626bacecfe53ddc03fe082e3243 2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d
どうしたことだ。ソース(shell.c)を参照してみるとこんな感じ。
if( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)!=0 ){ fprintf(stderr, "SQLite header and source version mismatch\n%s\n%s\n", sqlite3_sourceid(), SQLITE_SOURCE_ID); exit(1); }
SQLITE_SOURCE_IDはsqlite3.hとsqlite3.cに定義されていて、前者がsqlite3.hのもの。
コンパイル時に参照したsqlite3.hと実行時に参照しているsqlite.hが違う模様。そうか、yumで入っていたsqliteのsqlite3.hを参照してコンパイルしてしまったんだな。
ということでもう一度やり直し。先ほどのmake installで/usr/includeには最新のsqlite3.hが入っていますが、消しちゃえ。
# rm /usr/lib/libsqlite* # rm /usr/bin/sqlite* # rm /usr/include/sqlite*.h $ ./configure $ make # make install
これでOKでした。yumでuninstallしてから実行すれば良かった。