最近需要用到sqlite,去官網下了一個編譯安裝后打開sqlite3出現SQLite header and source version mismatch這個錯誤。
這個問題是因為ubuntu里面原來自帶了一個老版的sqlite運行庫,這個庫由一個庫文件和一個符號鏈接組成,位於/usr/lib/i386-linux-gnu目錄,分別是libsqlite3.so.0.8.6和一個符號鏈接到它的libsqlite3.so.0,由於上面進行的autoconf包的sqlite3並不是靜態編譯,sqlite3就已經被默認安裝到了/usr/local/bin里面去了,
所以就會出現庫不匹配的情況而程序拒絕執行的問題了。
解決方案:
由於不知道系統自帶的那個老版的sqlite庫還會不會有用,暫時就留着它,分別更名為libsqlite3.so.0.8.6_bak和libsqlite3.so.0_bak:
mv /usr/lib/i386-linux-gnu/libsqlite3.so.0.8.6 /usr/lib/i386-linux-gnu/libsqlite3.so.0.8.6_bak
mv /usr/lib/i386-linux-gnu/libsqlite3.so.0 /usr/lib/i386-linux-gnu/libsqlite3.so.0_bak
然后把剛才編譯好的autoconf包里面的這個庫復制過去:
cd /usr/local/lib
cp libsqlite3.so.0.8.6 /usr/lib/i386-linux-gnu
cp libsqlite3.so.0 /usr/lib/i386-linux-gnu
這樣問題就解決了。