原文地址:https://blog.csdn.net/lghtjpu/article/details/8103064
参考上文的地址,移植成功了sqlite3到arm板子上,特此记录过程
SQlite是一个开源的嵌入式数据库,至于它的特性和性能,这里就不介绍了,google上很多介绍了。SQlite是很受欢迎的一个小型的数据库,现在手机上的两大操作系统ios和android上都是用它,足以见它的分量了吧。
PC端的平台是ubuntu 16.04 . ARM的平台是AM3352。
SQlite的官网是www.sqlite.org,官网上的下载页面已经有很多官方编译好的各个操作系统版本的可执行文件和库文件,可以直接使用了。而且在ubuntu中也可以简单的通过sudo apt-get install sqlite3来安装。下面来介绍下通过源码编译的方法来移植到不同的平台上。
首先下载源码,在官方的download页面上有最新的下载,我移植的时候当前最新的版本是3.24.0。 下载地址为:https://www.sqlite.org/releaselog/3_24_0.html
1. 解压源码包:
$ tar -zxvf sqlite-autoconf-3240000.tar.gz
$ cd sqlite-autoconf-3240000
2. 由于我们要移植两个版本,而且在配置和编译安装的时候会参数一些文件,为了管理方便先建立几个目录
$ mkdir build
$ cd build
$ mkdir x86 arm
3. 编译X86的版本
$ cd x86
$ ../../configure --prefix=/usr/local
$ make
$ sudo make install
$ sudo ldconfig
上面配置命令中,--prefix选项后面的路径是编译安装后目标安装的位置,这个位置你可以自己定义。
安装完成后,产生的文件会存放在你配置时指定的目录.。bin目录下放的是sqlite3的可执行文件,lib目录下放的是库文件,include目录下放的是头文件,编译程序的时候有用。
由于库安装的路径可能不在系统的默认路径上,而引起出现”SQLite header and source version mismatch“这个错误,所以用ldconfig命令来解决。
4. 完成以上的步骤后就移植完了,可通过命令来查下
$ sqlite3 -version
3.24.0 2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca
5. 下面来将sqlite移植到arm上面
$ cd ../arm
$ ../../configure CC=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc --host=arm-linux --prefix=/home/jn/sqllite/sqllite-arm
$ make
$ make install
上面配置中,CC指定了ARM的编译工具链,--host指定了平台,安装路径为当前目录的/home/jn/sqllite/sqllite-arm目录下。install完成后,会在target目录下生成我们所需的执行文件,库文件和头文件等。
6. 经过上步所得到的文件其实已经可以放到ARM板上使用的了,但为了节省ARM板的存储空间,我们先对该文件瘦身,去掉没用的调试信息。
$arm-linux-strip ./sqllite-arm/lib/libsqlite3.so.0.8.6
$arm-linux-strip ./sqllite-arm/lib/libsqlite3.a
$arm-linux-strip ./sqllite-arm/bin/sqlite3
strip后,原来文件的大小由4M多减少到1M多,相当给力。
7. 完成所有的移植操作后,接下来做的就是把所得到的文件放到ARM板上了。为了跟刚才PC存放的位置相同,我是把相应的文件放到ARM板上/usr/local目录相对应的目录下面的,这个可以自己决定放哪。 把/bin/sqlite3拷贝到ARM板上的/usr/local/bin下,把/lib下的所有文件拷贝到ARM板/usr/local/lib目录下。
然后在/bin下创建软连接
~ # ln -s /usr/local/bin/sqlite3 /bin/sqlite3
接下来在ARM板上测试下是否能运行,测试方法跟PC上的一样。
~ # sqlite3 -version
3.24.0 2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca
~ #
update:
linux默认lib目录为:/lib和/usr/lib,可以输入以下命令
export LIBRARY_PATH=/usr/local/lib$LIBRARY_PATH
实现lib库动态链接,但是重启后失效,理论上写入开机自启脚本可保证开机自启软件正常运行,但后开终端无效
因此,将sqlite3拷入/usr/bin,将lib拷入/usr/lib
重启或者重新打开终端也不会失效