免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2844 | 回复: 1
打印 上一主题 下一主题

基于S3C2440的SQLite移植 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-09 21:54 |只看该作者 |倒序浏览

学习内容:SQLite移植
版本:V1.1
作者:Feng dong rui
整理日期:2009.09.29
嵌入式技术交流群:92388278
交流邮箱:1986fdr@163.com

基于S3C2440的SQLite移植
一、环境介绍
1、主机环境:虚拟机下Fedora9
2、交叉编译器:arm-linux-gcc-4.3.2
3、软件包:sqlite-3.6.18.tar.bz2
4、把sqlite-3.6.18.tar.bz2解压到主机的/opt/studyarm/SQLite-transplant目录下,并重命名为sqlite,在同一级目录下在新建目录sqlite-arm,这个目录来放编译后产生的文件。
二、移植步骤
1、配置SQLite
在sqlite目录下进行如下配置:
./configure --prefix=/opt/studyarm/SQLite-transplant/sqlite_arm --disable-tcl --host=arm-linux
2、编译
make
3、安装
make install
该命令将编译好的文件安装到sqlite-arm目录下,在sqlite-arm目录下会生成bin、lib、include目录,bin目录下是sqlite3可执行文件,lib目录下包含运行sqlite3所依赖的库,另外在编译,另外在编译sqlite应用程序时,必须指明所依赖的头文件和库。
4、去掉调试信息(可选)
文件编译后会产生许多调试信息,下载到开发板将会占用较多存储器。我在编译后lib目录下文件大小达到2.2M,占用了不少Flash,为减小Flash占用去掉不必要的调试信息。在sqlite_arm目录下执行如下命令:
arm-linux-strip bin/*
arm-linux-strip lib/*
去掉调试信息后文件大小减小许多。将sqlite_arm /bin目录下的文件sqlite3拷贝到根文件系统的bin目录下,并将sqlite_arm/lib目录下的文件拷贝到根文件系统的lib目录下。
三、测试
1、新建数据库
[rootMrFeng]#sqlite3 test.db
SQLite version 3.6.18
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table film (number,name);
sqlite> insert into film values (1,'aaa');
sqlite> insert into film values (2,'bbb');
sqlite> select * from film;
1|aaa
2|bbb
sqlite>.quit
[rootMrFeng]#
蓝色部分为输入。
2、测试程序
这里以SQLite官方站点http://sqlite.org的quick start文档中的测试程序为例对移植到ARM-Linux上的SQLite3进行测试。该程序清单如下:
//test_sqlite.c
#include
#include

static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
    int i;
    for(i=0; i
    {
        printf("%s = %s\n", azColName, argv ? argv : "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]);
    }
    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 -o test_sqlite test_sqlite.c -lsqlite3 -L/opt/studyarm/SQLite-transplant/sqlite_arm/lib -I/opt/studyarm/SQLite-transplant/sqlite_arm/include
使用如下命令去掉调试信息:
arm-linux-strip test_sqlite
3、在上面新建的数据库目录下测试:
[rootMrFeng]#./test_sqlite  test.db  "select * from film"
number = 1
name = aaa

number = 2
name = bbb

[rootMrFeng]#
















---------------------取之于网络,还之于网络-------------------------


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104286/showart_2066623.html

论坛徽章:
0
2 [报告]
发表于 2012-10-15 20:07 |只看该作者
移植过程中,可以把一些心得体会写出来分享一下,那样更好了!

回复 1# unix_disciple


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP