sqlite3嵌入式数据库的ARM-Linux移置详解
1.1 sqlite
简介(跳过
)
1.2 下载代码(跳过
)
1.3 交叉编译sqlite库准备工作:
1.
取得一个 arm-linux-gcc 的编译器。
2. sqlite
的源码 sqlite-3.0.8.tar.gz (本文以)好了,我们可以开始了。
这里设 arm-linux-gcc 在
/usr/local/arm-linux/bin/
目录下解压sqlite-3.0.8.tar.gz 到/usr/local/arm-linux/sqlite
# tar zxvf sqlite-3.0.8.tar.gz -C /usr/local/arm-linux/sqlite
# cd /usr/local/arm-linux/sqlite
将目录下的 configure 文件的
19206
行 { (exit 1); exit 1; }; }改为
{ (echo 1); echo 1; }; }
20107行 { (exit 1); exit 1; }; }改为
{ (echo 1); echo 1; }; }
20514行 { (exit 1); exit 1; }; }改为
{ (echo 1); echo 1; }; }
20540行 { (exit 1); exit 1; }; }改为
{ (echo 1); echo 1; }; }
# mkdir /usr/local/arm-linux/sqlite-arm-linux
# cd /usr/local/arm-linux/sqlite-arm-linux
设置交叉编译环境# export PATH=/usr/local/arm-linux/bin:$PATH
配置:
# ../sqlite/configure --host=arm-linux --prefix=/usr/local/arm-linux/sqlite-arm-linux
注意:这里不用写成了 "../sqlite/configure --host=arm-linux --prefix=/usr/local/arm-linux/sqlite-arm-linux/"这最后一个斜杠"/"不要带上了。如果一切顺利的话,会在/usr/local/arm-linux/sqlite-arm-linux目录下生成一些相关文件
:
config.log
config.status
libtool
Makefile
sqlite3.pc
改/usr/local/arm-linux/sqlite-arm-linux/Makefile文件的 23行
BCC = arm-linux-gcc -g -O2
为
BCC = gcc -g -O2
编译安装
:
# make
# make install
注意: "# make install" 这一步将会在 /usr/local/arm-linux/sqlite-arm-linux/lib 生成库文件
# cd lib
# file libsqlite3.so.0.8.6
libsqlite3.so.0.8.6: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
此时生成的sqlite文件是还未strip过的,你可以使用命令“file sqlite”查看文件信息。用strip处理过后,将去掉其中的调试信息,执行文件大小也将小很多。
命令如下:
# arm-linux-strip libsqlite3.so.0.8.6
这样我们已经编译出了在ARM板上运行sqlite将/usr/local/arm-linux/sqlite-arm-linux/bin/目录下的 sqlite3 文件下载到你的arm板上,方法很多,你需要根据自己的情况来选择。如ftp,nfs,串口等。好,开始运行
chmod +wx sqlite
[root@51Board var]# ./sqlite3 zieckey.db
./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such fileor directory这里是因为刚刚编译时编译的是动态连接库形式的,所有我们还的将库文件下载到ARM板上。
将 /usr/local/arm-linux/sqlite-arm-linux/lib 目录下所有文件下到ARM板上。再次运行,
[root@51Board var]# ./sqlite3 zieckey.db
./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such fileor directory
还是出错,哦,我们没有设置环境变量,假设我们下在库文件在ARM板上的 /usr/qpe/lib/ 目录下,
这里设置环境就像下面:
[root@51Board var]# export LD_LIBRARY_PATH=/usr/qpe/lib:$LD_LIBRARY_PATH好了这样就可以运行了:
[root@51Board var]# ./sqlite3 aa.db
SQLite version 3.0.8Enter ".help" for instructions
sqlite>
看见sqlite>提示符号没有?成功了。哈哈!!
sqlite>.help好了。
现在
sqlite
已经在
arm-linux
下跑了起来