📄 readme.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 + -