嵌入式WEB服务器移植三部曲之SQLite的移植
来源:互联网 发布:金苹果淘宝培训学院 编辑:程序博客网 时间:2024/04/30 17:43
转自:http://hi.baidu.com/%D2%BC%BF%DA%B3%BE%B0%A3/blog/item/c3ddb508f218aecb267fb51f.html
BOA+PHP+SQLite移植三部曲之SQLite
第三部:SQLite的移植
1.下载 SQLite 3.3.8,http://sqlite.org 解压到根目录下:
[root@localhost /]# tar -xzvf sqlite-3.3.8.tar.gz
SQLite3的所有源代码文件都位于sqlite-3.3.8/src/目录下。
2.手动修改Makefile文件
在sqlite-3.3.8/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过以下命令拷贝此文件并重命名为Makefile:
[root@localhost /]# cd sqlite-3.3.8/
[root@localhost sqlite-3.3.8]# mv Makefile.linux-gcc Makefile
打开Makefile文件并手动修改Makefile文件的内容
TOP = ../sqlite
修改为:
TOP = .
TCC = gcc -O6
修改为:
TCC = arm-linux-gcc -O6
AR = ar cr
修改为:
AR = arm-linux-ar cr
RANLIB = ranlib
修改为:
RANLIB = arm-linux-ranlib
MKSHLIB = gcc -shared
修改为:
MKSHLIB = arm-linux-gcc -shared
注释掉下面这一行:
TCL_FLAGS = -I/home/drh/tcltk/8.4linux
注释掉下面这一行:
LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件,找到这个文件中的下面一行:
select.o table.o tclsqlite.o tokenize.o trigger.o
把它替换成:
select.o table.o tokenize.o trigger.o
也就是把该行上的tclsqlite.o去掉。这样编译的时候将不会编译SQLite3的Tcl语言绑定。
至此,修改Makefile工作完成!
3.编译
[root@localhost sqlite-3.3.8]# make
编译完成后,将在sqlite3.3.8/目录下生成库函数文件libsqlite3.a和头文件sqlite3.h,这就是所需要的两个文件了。
4、测试
创建test.c文件:
#include <stdio.h>
#include <sqlite3.h>
static int
callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for (i = 0; i < argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int
main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if (argc != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
将此源程序保存为test.c,然后,通过以下命令编译该程序:
[root@localhost /]# arm-linux-gcc -I /root/sqlite-3.3.8/ -L /root/sqlite-3.3.8 -o test1 test.c -lsqlite3
上述编译命令中,-I /root/sqlite-3.3.8指明了头文件sqlite3.h所在的目录,-L /root/sqlite3.3.8 指定了库函数文件libsqlite3.a所在的目录,-o test指定编译生成的文件名为test,test.c是源程序文件,-lsqlite3指明要链接静态库文件libsqlite3.a。
在开发板上创建sqlite目录,把编译生成的sqlite3和test1放到该目录下:
[root@Intel /]# mkdir /sqlite
[root@Intel /]# cp /mnt/sqlite-3.3.8/sqlite3 /sqlite
[root@Intel /]# cp /mnt/sqlite-3.3.8/test1 /sqlite
接下来就可以测试test程序了。test程序接受两个参数:第一个参数为数据库文件名,第二个参数为要执行的SQL语句。
[root@Intel sqlite]#./sqlite3 xyz.db
[root@Intel sqlite]#./test xyz.db "create table tbl0(name varchar(10), number smallint);"
[root@Intel sqlite]#./test xyz.db "insert into tbl0 values('cyc', 1);"
[root@Intel sqlite]#./test xyz.db "insert into tbl0 values('dzy', 2);"
[root@Intel sqlite]#./test xyz.db "select * from tbl0;"
name = cyc
number = 1
name = dzy
number = 2
解释一下上面所用的测试命令:第一条命令在 xyz.db这个数据库文件中创建了一个tbl0表,表中包含两个字段,字段name是一个变长字符串,字段number的类型为smallint;第二条命令向数据库的tbl0表中插入了一条记录(‘cyc’,1);第三条命令向数据库的tbl0表中插入了一条记录(‘dzy’,2);第四条命令则是查询表tbl0中的所有内容。
至此,SQLite3数据库在PXA270开发板上移植完成,测试结果表明数据库能够正常工作。
- 嵌入式WEB服务器移植三部曲之SQLite的移植
- 嵌入式WEB服务器移植三部曲之BOA的移植
- 嵌入式WEB服务器移植三部曲之PHP的移植
- 嵌入式Web服务器移植
- 嵌入式Web服务器移植
- 嵌入式Web服务器移植
- 嵌入式系统移植三部曲
- 嵌入式移植三部曲 付伟贺
- 嵌入式WEB服务器BOA的移植方法
- 嵌入式WEB服务器BOA的移植方法
- 嵌入式web服务器boa的编译移植
- 嵌入式WEB服务器BOA的移植方法
- 嵌入式web服务器Boa的移植
- 嵌入式web服务器boa的编译移植
- 移植thttpd嵌入式web服务器
- 移植thttpd嵌入式web服务器
- 移植thttpd嵌入式web服务器
- 移植thttpd嵌入式web服务器
- Wiz和百度编辑器的结合
- 2009-2010年中国嵌入式开发从业人员调查报告
- Linux常用命令大全
- Java 环境配置
- QT4中QLabel控件实现网址超链接
- 嵌入式WEB服务器移植三部曲之SQLite的移植
- Syslog在网络管理中的应用
- POJ 1470 Closest Common Ancestors 最近公共祖先
- 出色的Web服务器Jetty
- 励志小诗
- 基于linux-2.6.35的class_create(),device_create解析
- 该如何学?
- mysql设置
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)