OpenWrt 自学笔记(4)------交叉编译SQLite3
来源:互联网 发布:android 无法修改mac 编辑:程序博客网 时间:2024/06/18 06:11
1.配置下载SQLite3
Utilities----->
database------>
sqlite2-cli............ SQLite (v3.x)database engine (cli)
openwrt系统选着编译libpthread进去,以支持线程库
Basesystem ------->
<*>libthread……………………POSIX thread library
如果默认选项不是自己需要的数据库版本
*************************************************************************************************************************
2、修改支持sqlite3,vim feeds/packages/libs/sqlite3/Makefile
将版本号修改为sqlite3和编译之后拷贝的库的名字
PKG_NAME:=sqlite3
PKG_VERSION:=3.6.17
PKG_RELEASE:=3
下载新版本的openwrt 可以不修改,也不建议修改
*******************************************************************************************************************************
2.编译安装mips库
进入源码文件解压SQLite3,进入到该目录执行
./configure --host=mips-openwrt-linux --prefix=/home/linux64/openwrt/openwrt/dl/sqlite-autoconf-3081101/sqlite_mips
make
sudo make install
可以看到生成一个sqlite_mips文件夹内容如下
其中include 为相应头文件,lib为相应库文件
3.编译SQLite程序
我用C语言封装了SQLite3的程序如下
#include<stdio.h>
#include<sqlite3.h>
#include<stdlib.h>
int callback(void *p,int n,char **f_value,char **f_name)//n代表了表中的列数 f_value
{
int i;
if(*(int *)p == 1)
{
for(i = 0;i < n;i ++)
{
printf("%s\t",f_name[i]);
}
printf("\n");
*(int *)p = 0;
}
for(i = 0;i < n;i ++)
{
printf("%s\t",f_value[i]);
}
printf("\n");
return 0;
}
int main(int argc, const char *argv[])
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open("./my.db",&db) != SQLITE_OK)
{
puts(sqlite3_errmsg(db));
exit(1);
}
char sqlopt[64];
sprintf(sqlopt,"create table stu(name,id);");
if(sqlite3_exec(db,sqlopt,NULL,NULL,&errmsg) != SQLITE_OK)
{
puts(errmsg);
exit(1);
}
#if 0
sprintf(sqlopt,"insert into stu values('lxs',1000);");
if(sqlite3_exec(db,sqlopt,NULL,NULL,&errmsg) != SQLITE_OK)
{
puts(errmsg);
exit(1);
}
#endif
char name[15];
int id;
int i;
for(i = 0;i < 2;i ++)
{
printf("请输入数据:");
scanf("%s%d",name,&id);
sprintf(sqlopt,"insert into stu values('%s',%d);",name,id);
sqlite3_exec(db,sqlopt,NULL,NULL,&errmsg);
}
int a = 1;
sprintf(sqlopt,"select * from stu;");
if(sqlite3_exec(db,sqlopt,callback,&a,&errmsg) != SQLITE_OK)
{
puts(errmsg);
exit(1);
}
char **val;// char *val[];
int r;
int c;
sprintf(sqlopt,"select * from stu;");
if(sqlite3_get_table(db,sqlopt,&val,&r,&c,&errmsg) != SQLITE_OK)
//r代表数据的行数,c代表列数
{
puts(errmsg);
exit(1);
}
for(i = 0;i < c;i ++)
{
printf("%s\t",val[i]);
}
printf("\n");
int count = 0;
for(i = c;i < (r + 1) * c;i ++)
{
printf("%s\t",val[i]);
count ++;
if(count % c == 0)
printf("\n");
}
return 0;
}
编译该程序
mips-openwrt-linux-gcc sqlite.c -lsqlite3 -I ../sqlite_mips/include/ -L ../sqlite_mips/lib/ -lsqlite3
-I :是指定刚才生成的头文件 -L 是生成的库文件即.so文件 格式为mips
4.拷贝到路由器运行如下
root@OpenWrt:/# ./a.out
可以看到生成了my.db
0 0
- OpenWrt 自学笔记(4)------交叉编译SQLite3
- OpenWrt 自学笔记(2)------交叉编译链配置
- openwrt 编译支持sqlite3
- 交叉编译OpenWRT
- openwrt交叉编译
- Openwrt 交叉编译HelloWord
- openwrt 交叉编译花生壳
- 交叉编译OpenWRT应用程序
- OpenWrt交叉编译helloworld
- openwrt 交叉编译花生壳
- 交叉编译sqlite3
- sqlite3 交叉编译
- sqlite3的交叉编译
- sqlite3交叉编译
- 交叉编译pcre、sqlite3
- sqlite3交叉编译
- openwrt交叉编译自己的应用程序(openwrt应用开发)
- OpenWrt 自学笔记(1)----源码下载
- 详解iPhone开发之Objective-C和 C 混编
- Show Processlist
- 新建联系人
- ubuntu 配置安装vsftpd
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- OpenWrt 自学笔记(4)------交叉编译SQLite3
- Objective-C和C++混编的要点
- USACO-Section 2.3 Money Systems(DP)
- 伸展树学习小结
- object-c 混编 调用C,C++接口
- JBossWeb/Tomcat 初始化连接器和处理 Http 请求过程
- HDU 2048 2049 (错排,排列组合)
- 读书笔记 JavaScript 高级程序设计(第三版)-- 第1章
- Java Request 获取域名