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:没有这个文件或目录,提示没有找到库文件等问题。
- sqlite移植
- SQLite 移植
- sqlite 移植
- sqlite 移植
- 移植Sqlite
- Sqlite移植
- sqlite移植
- 移植sqlite-3.3.6
- SQLite移植和使用
- sqlite移植到mini2440
- sqlite 移植到2440
- 移植sqlite 笔记
- sqlite嵌入式移植
- sqlite嵌入式移植评估
- mini2440移植sqlite
- 移植sqlite+apache+php
- 移植sqlite+apache+php
- SQLite移植到arm
- 跟Google学习Android开发-起始篇-用碎片构建一个动态的用户界面(3)
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128
- 上转型对象和接口回调
- ZBarSDK支持armv7s
- 【python】几个常用工具函数
- sqlite 移植
- css修改ExtJS:TreePanel的小图标
- C++基础知识
- AS3单例形式
- hdu 1004
- Core Text Tutorial for iOS: Making a Magazine App
- 不怕牺牲的shooow
- 无法运行msconfig
- js中实现jsp中的basePath