sqlite 移植

来源:互联网 发布:ni数据采集卡选型 编辑:程序博客网 时间:2024/05/17 01:42

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  include lib 三个目录。先对lib目录下的文件strip一下,再把lib下的libsqlite3.so.0.8.6拷贝到根文件系统的lib目录下,并且在该目录下建一个软连接,命令为 ln –s libsqlite3.so.0.8.6 libsqlite3.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 (

  sqlite3 3 ,      / 3 已经打开的数据库句柄3 /

  const char 3 sql ,   / 3 要执行的SQL 语句3 /

  sqlite callback ,   / 3 回调函数3 /

  void 3 ,      / 3 回调函数的第一个参数3 /

  char 3 3 errmsg   / 3 错误信息返回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:没有这个文件或目录,提示没有找到库文件等问题。


原创粉丝点击