因为之前用的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 就是最后要用到的动态链接库。