- 論壇徽章:
- 0
|
學(xué)習(xí)內(nèi)容:SQLite移植
版本:V1.1
作者:Feng dong rui
整理日期:2009.09.29
嵌入式技術(shù)交流群:92388278
交流郵箱:1986fdr@163.com
基于S3C2440的SQLite移植
一、環(huán)境介紹
1、主機(jī)環(huán)境:虛擬機(jī)下Fedora9
2、交叉編譯器:arm-linux-gcc-4.3.2
3、軟件包:sqlite-3.6.18.tar.bz2
4、把sqlite-3.6.18.tar.bz2解壓到主機(jī)的/opt/studyarm/SQLite-transplant目錄下,并重命名為sqlite,在同一級(jí)目錄下在新建目錄sqlite-arm,這個(gè)目錄來放編譯后產(chǎn)生的文件。
二、移植步驟
1、配置SQLite
在sqlite目錄下進(jìn)行如下配置:
./configure --prefix=/opt/studyarm/SQLite-transplant/sqlite_arm --disable-tcl --host=arm-linux
2、編譯
make
3、安裝
make install
該命令將編譯好的文件安裝到sqlite-arm目錄下,在sqlite-arm目錄下會(huì)生成bin、lib、include目錄,bin目錄下是sqlite3可執(zhí)行文件,lib目錄下包含運(yùn)行sqlite3所依賴的庫(kù),另外在編譯,另外在編譯sqlite應(yīng)用程序時(shí),必須指明所依賴的頭文件和庫(kù)。
4、去掉調(diào)試信息(可選)
文件編譯后會(huì)產(chǎn)生許多調(diào)試信息,下載到開發(fā)板將會(huì)占用較多存儲(chǔ)器。我在編譯后lib目錄下文件大小達(dá)到2.2M,占用了不少Flash,為減小Flash占用去掉不必要的調(diào)試信息。在sqlite_arm目錄下執(zhí)行如下命令:
arm-linux-strip bin/*
arm-linux-strip lib/*
去掉調(diào)試信息后文件大小減小許多。將sqlite_arm /bin目錄下的文件sqlite3拷貝到根文件系統(tǒng)的bin目錄下,并將sqlite_arm/lib目錄下的文件拷貝到根文件系統(tǒng)的lib目錄下。
三、測(cè)試
1、新建數(shù)據(jù)庫(kù)
[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]#
藍(lán)色部分為輸入。
2、測(cè)試程序
這里以SQLite官方站點(diǎn)http://sqlite.org的quick start文檔中的測(cè)試程序?yàn)槔龑?duì)移植到ARM-Linux上的SQLite3進(jìn)行測(cè)試。該程序清單如下:
//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;
}
使用如下命令編譯測(cè)試程序:
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
使用如下命令去掉調(diào)試信息:
arm-linux-strip test_sqlite
3、在上面新建的數(shù)據(jù)庫(kù)目錄下測(cè)試:
[rootMrFeng]#./test_sqlite test.db "select * from film"
number = 1
name = aaa
number = 2
name = bbb
[rootMrFeng]#
---------------------取之于網(wǎng)絡(luò),還之于網(wǎng)絡(luò)-------------------------
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/104286/showart_2066623.html |
|