Sqlite移植到ARM开发板
Sqlite3.3.8移植
1、下载sqlite-3.3.8.tar.gz源码包,解压tar –zxvf sqlite-3.3.8.tar.gz
2、Cd sqlite-3.3.8
3、手动修改makefile 文件,目录下有一个makefile案例文件: Makefile.linux-gcc
4、重命名一个Makefile文件,cp Makefile.linux-gcc Makefile
5、 打开Makefile文件:vi Makefile
6、 首先找到Makefile文件中的下面这样一行:
TOP = ../sqlite
将其修改为:
TOP = .
找到下面这样一行:
TCC = gcc -O6
将其修改为:
TCC = /usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -O6
找到下面这样一行:
AR = ar cr
将其修改为:
AR = /usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi-ar cr
找到下面这样一行:
RANLIB = ranlib
将其修改为:
RANLIB = /usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi-ranlib
找到下面这样一行:
MKSHLIB = gcc -shared
将其修改为:
MKSHLIB = /usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -shared
注释掉下面这一行:
TCL_FLAGS = -I/home/drh/tcltk/8.4linux
注释掉下面这一行:
LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm –ldl
注意:在Makefile的上面有一个BCC,这里就不要修改成交叉编译链,这里生成的文件需要是gcc编译的。
原则上,对Makefile的修改主要包括两个方面:首先是将编译器、归档工具等换成交叉工具链中的对应工具,比如,gcc换成/usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi-gcc,ar换成/usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi- ar,ranlib换成/usr/local/arm/arm-2009q1/bin/arm-none-linux-gnueabi-ranlib等等;其次是去掉与TCL相关的编译选项,因为默认情况下,将会编译SQLite3的Tcl语言绑定,但是在移植到ARM-Linux的时候并不需要,因此将两个与TCL有关的行注释掉。7、接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件。找到这个文件中的下面一行:63行: select.o table.o tclsqlite.o tokenize.o trigger.o \,去掉tclsqlite.o这样编译的时候将不会编译SQLite3的Tcl语言绑定。
7、执行make,执行make后可能会出现以下错误:
8、./lemon -DSQLITE_OMIT_CURSOR parse.y
9、./lemon: ./lemon: cannot execute binary file
10、  
相关文档:
sqlite官方站
http://www.sqlite.org/
SQL Syntax
http://www.sqlite.org/lang.html
sqlite中文站
http://www.sqlite.com.cn/
http://www.sqlitechina.org/
建立数据库档案
用sqlite3建立数据库的方法很简单,只要在shell下键入(以下$符号为shell提示号,请勿键入):
$ sqlite3 foo.db
如果目录下没有fo ......
前一阵字做项目(嵌入式linux),由于要保存大量的数据,而且最长要保存30天的时间。本来打算保存到文件中,每次启动应用程序的时候重新解析一遍,可是当数据量很大的时候,就出现效率的问题了。所以最后还是放弃了使用文件的打算,决定使用数据库存取数据。
linux下的数据库也很多,有开源的,也有收费的。对于我们来说,肯 ......
.help 显示帮助信息
.import FILE TABLE 把文件中的数据导入到表中,各字段用separator(默认是"|")的值为分隔符,下面我们举个例子。 我们在F盘下建一个data.txt文件,内容如下:
4|开源
5|技术
.import命令操作如下:
sqlite> .import data.txt websites
sqlite>
查看结果如下:
sqlite> select * from ......
.nullvalue STRING 用STRING代替null值显示,不难理解,就不再累述了。
.output FILENAME 设置把查询输出到文件,后面的输出结果都保存到文件中,如:
sqlite> .mode list
sqlite> .output websites.txt
sqlite> select * from websites;
sqlite>
可以在F盘下发现建立了websites.txt文件,其内容如下:
......
在SQL中有如下两种方法可以实现将一个表中数据到另一个表中
1> select ... into new_tablename from ... where ...
2> insert (into) old_tablename select ... from ... where ...
区别是前者把数据插入一个新表(先建立表,再插入数据),
后者是把数据插入已经存在的一个表中,我个人喜欢后者,因 ......