⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 在GEC2410平台上的编译应用SQLite-3.6.7的全过程和源代码
💻 TXT
字号:
在arm-linux平台上的编译应用SQLite-3.6.7

sqlite 第一个Alpha版本诞生于2000年5月,是实现了SQL 92标准的一个大子集的嵌入式数据库,其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中。官方测试表明sqlite的功能在一定程度上居于MySQL 和PostgreSQL之间,在性能上sqlite常常快2-3倍 (甚至更多)。另处,SQLite的内存组织非常高效,只需在很小的内存中维护其很小的尺寸,远比其它任何数据库系统都小。这个特点非常适合嵌入式应用。


一、编译环境:
1. Fedora10
2. 交叉编译器cross-3.3.2.tar.bz2
3. sqlite-3.6.7.tar.gz

二、编译:

解压sqlite-3.6.7.tar.gz并在目录下运行:
# ./configure --disable-tcl --host=arm-linux --prefix=/dist-sqlite3 (/dist-sqlite3目录中存放最终编译结果)
# make
# make install 
(这一步将会在 /dist-sqlite3 生成三个目录:
	bin    内有可执行文件sqlite3 ,可以放在开发板上运行;
	include 内有sqlite3.h与sqlite3ext.h两个头文件,是我们要得到的文件
	lib   内有libsqlite3.a静态库文件和libsqlite3.so.0.8.6动态库文件,也是我们需要的文件
)


# cd /dist-sqlite3/lib
# file libsqlite3.so.0.8.6
libsqlite3.so.0.8.6: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped

此时生成的sqlite库文件是还未strip过的,可以使用命令“file libsqlite3.so.0.8.6”查看文件信息。用strip处理过后,将去掉其中的调试信息,执行文件大小也将小很多。

# arm-linux-strip libsqlite3.so.0.8.6

同理对/dist-sqlite3/bin/sqlite3去掉其中的调试信息

# cp -arf /dist-sqlite3/lib fs/lib (fs/lib 为开发板文件系统)
# cp -arf /dist-sqlite3/bin/sqlite3 fs/usr/bin (fs/usr/bin 为开发板文件系统)

设置环境变量:export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH

重新烧制文件系统


三、测试:

(1)

# sqlite3 
SQLite version 3.6.7
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite> .exit
# 

(2)


建立一个测试程序,命名为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文件

# arm-linux-gcc -I/dist-sqlite3/include -L/dist-sqlite3/lib -o test test.c -lsqlite3

在开发板上运行:

# ./test xyz.db "create table tbl0(name varchar(10), number smallint);"
# ./test xyz.db "insert into tbl0 values('cyc', 1);"
# ./test xyz.db "insert into tbl0 values('dzy', 2);"
# ./test xyz.db "select * from tbl0;"
name = cyc
number = 1
 
name = dzy
number = 2












⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -