因為之前用的wsSQLite3是Github上的up主已經編譯好的Windows動態鏈接庫DLL,項目暫時沒顧得上往Linux系列上部署,所以一直都那么用著,前幾天正好有機會裝了個Deepin(Debain Based),所以就順勢在Linux環境下搞一搞事情,于是就暴露出了一些問題。
采坑路線
1. 沒有現成的so庫可以用。
解決方案:沒有那就自己編譯吧,源代碼都在那里擺著呢。
存在問題:既然要編譯了,那肯定會有各種報錯。
2. wsSQLite3編譯難度太高,網上沒有資料。
解決方案:換成 SQLCipher,SQLCipher也需要編譯,但是編譯過程中沒有遇到太大的麻煩。
存在問題:可能是我編譯選項選的有問題,我們最需要的加解密接口可以正常調用,但并不好使。
3. SQLCipher加解密接口不好使。
解決方案:還是換回wsSQLite3。
編譯wsSQLite3
廢話就不多講了,有什么報錯也不提了,總之正確的做法大概只有一種,錯誤的報錯五花八門,層出不窮。
wsSQLite3的編譯依賴 wxWidgets,但是通過apt-get
的方式安裝的 wxWidgets 無法讓 wsSQLite3 在編譯的時候正確依賴,所以還是要先編譯 wsWidgets。
下載wsWidgets,編譯。編譯時可以參考《如何在 Ubuntu/Debian/Linux Mint 中編譯和安裝 wxWidgets》。文中提示可以使用 checkinstall 來將生成的目標文件打包成軟件包,以便包管理器可以方便管理,我在使用 checkinstall 打包的時候失敗了,所以就直接 make && make install 了。
-
編譯 wsWidgets。
$ mkdir gtk-build $ cd gtk-build $ ../configure $ make && make install
值得一提的是,參考資料中有使用
--disable-shared
選項,但是采坑后得之,Node
的ffi
模塊似乎只能調用動態庫,所以這里不加這個參數。 部署 wsWidgets。聽起來很扯,剛才不是已經部署完了嗎?我也有點蒙,總之,將生成的
libwx_gtk3u_core-3.0.so.0
拷貝到/usr/lib
下即可。-
編譯 wsSQLite3 。
$ autoreconf $ mkdir build-hahahaha $ cd build-hahahaha $ ../configure $ make && make install
部署 wsSQLite3。libwxode_gtk3u_wxsqlite3-3.0.so 就是最后要用到的動態鏈接庫。