Arm-linux的移植:
1下载sqlite:请到http://www.sqlite.org/download.html,现在最新的版本是sqlite-amalgamation-3.6.17.tar,将下载的代码包解开,将生成sqlite-3.6.17目录。
2另外可在同目录下新建一个build目录,用于存放编译生成的文件,进入sqlite-3.6.17,执行./configure --host=arm-softfloat-linux-gnu --prefix=/home/hzc/build
3 生成Makefile,在执行make,然后再makeinstall,结束后会在刚才我们指定的build目录下生成bin includelib 三个目录。先对lib目录下的文件strip一下,再把lib下的libsqlite3.so.0.8.6拷贝到根文件系统的lib目录下,并且在该目录下建一个软连接,命令为 ln –slibsqlite3.so.0.8.6libsqlite3.so.0 ,再把build/bin下的sqlite3拷贝到根文件系统的usr/bin目录下面,这样我们就完成了sqlite在arm-linux的移植工作。
sqlite操作:
sqlite 本身提供了C 语言的API 接口,使得对数据库的操作十分简单,主要是对3个API 函数的调用。
(1) 打开数据库
int sqlite3_open (
const char 3 filename,/ 3 数据库文件名(U TF28) 3 /
sqlite3 3 3 ppDb / 3 输出SQLite 数据库句柄3 /
) ;
(2) 执行sql
int sqlite3_exec (
const char 3 sql, / 3 要执行的sql 语句3 /
void 3, / 3 回调函数的第一个参数3 /
char 3 3 errmsg / 3 错误信息返回3 /
);
int sqlite3_close( sqlite3 3 ) ; / 3 参数就是打开时的结构体,即数据库句柄3 /
其中,sqlite3_exec ( ) 函数的第二个参数用来处理一条或多条sql 语句,语句间必须用“;”号隔开。如果是查询(SELECT) 语句,查询结果的每一条记录都必须调用第三个参数的Callback 函数,第四个参数则为Callback 函数的第一个参数指针。如果不是查询语句,第三、四个参数为NULL。所有sql 执行完毕后返回0,否则返回错误代码,可通过第五个参数值来查看详细错误信息。
应用程序的交叉编译:
arm-softfloat-linux-gnu-gcc name.c -o db.out -lsqlite3 -L/home/hzc/new/lib -I/home/hzc/new/include
默认的情况下,是执行动态编译,编译生成的文件比静态编译小得多,因为我们是在开发板上运行,之前已经拷贝了库文件到根文件系统里,所以这里我们采用默认的动态编译方式就行了,-lsqlite3 是指定库名,-L/home/hzc/new/lib 是指定库的搜索目录,new也就是我们刚才sqlite的安装目录,-I/home/hzc/new/include 是指定头文件的搜索目录,我们在name.c文件中头文件包含形式为 #include<sqlite3.h>,还可以把头文件拷到但前name.c同目录下或者包涵时把路径也写上,这样编译时就可以不需要–I选项了。如果没做好前面这些工作编译是通不过的,会出错误:sqlite3.h:没有这个文件或目录,提示没有找到库文件等问题。
原文链接:https://www.f2er.com/sqlite/201214.html