sqlite3在ARM上的移植
一 、 开发环境: Mini2440 , linux-2.6.32.2 内核, ubuntu9.10 , arm-linux-gcc-4.3.2 在 http://www.sqlite.org/ 上下载 sqlite 源代 码
二、移植步骤 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 如果出现arm-none-linux-gnueabi-gcc: 3.7.6.2": No such file or directory<command-line>: warning: missing terminating " character make: *** [sqlite3.lo] 错误 1 则修改makefile中的 -DPACKAGE_STRING=/"sqlite 3.7.6.2/" 把sqlite和3.7.6.2中间的空格去掉 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,&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)把表结构输出,同时索引也会输出 .dump 表名 9)退出 >.exit 或者.quit (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |