一、开发环境: Mini2440,linux_2.6.32.2内核, ubuntu9.10,arm-linux-gcc-4.3.2 在http://www.sqlite.org/上下载sqlite源代码sqlite-3.6.22.tar.gz 二、移植步骤 1.解压数据库源文件并进入解压后的目录,如下: tar -zxvf sqlite-3.6.22.tar.gz cd sqlite-3.6.22 2.创建一个目录build并进入该目录,用于在这个目录中进行交叉编译,如下: mkdir build cd build 3.在build目录中运行sqlite-3.6.22中的configure脚本生成Makefile文件,如下: ../configure --host=arm-linux --prefix=/root/sqlite-3.6.22/build/target 选项host指定的是用arm交叉编译器进行编译 选项prefix后面的路径是到时候编译安装后目标存放的目录,你可以任意设置 4.执行make和make install命令,如下: make make install 编译和安装完后,在/root/sqlite-3.6.22/build/target目录中会生成三个目标文件夹,分别是:bin、include、 lib,然后分别将bin下的文件下载到开发板的/usr/bin目录中,lib下的所有文件下载到开发板的/usr/lib目录中即可。include目录下是sqlite的C语言API的头文件,编程时会用到。 5.在开发板上测试移植的sqlite数据库。登录开发板的Linux,执行: sqlite3 demo.db sqlite3是一个sqlite的命令行访问程序,demo.db是新建的数据库的名字,必须以db作后缀。然后会看到下面的画面,说明移植成功。
三、测试 #include <stdlib.h> #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]); } 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]); } rc = sqlite3_open(argv[1], &db); if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); } rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ) { fprintf(stderr, "SQL error: %s\n", zErrMsg); } sqlite3_close(db); return 0; } 使用如下命令编译测试程序: 交叉编译时采用arm-linux-gcc -I /……(安装路径)/include -L/……(安装路径)/lib -o target src -lsqlite3 arm-linux-gcc -o test_sqlite test_sqlite.c -lsqlite3 -L /opt/FriendlyARM/mini2440/sqlite-3.7.3/build/lib/ -I /opt/FriendlyARM/mini2440/sqlite-3.7.3/build/include/
1)
把查询结果用屏幕输出
8)把表结构输出,同时索引也会输出 |
sqlite3在mini2440上的移植
2010-11-11 15:48
作者: TQ_TongJi 发布时间: 2010-11-21