热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux内核数据库sqlite3的移植,sqlite3嵌入式数据库arm+linux移植

1.下载sqlite3源代码2.解压源代码:tarxvzfsqlite-amalgamation-3.6.1.tar.gz3.配置交叉编译到armlinux平台:.c

1.   下载sqlite3源代码

2. 解压源代码:

tar  xvzf   sqlite-amalgamation-3.6.1.tar.gz

3. 配置交叉编译到arm linux平台:

./configure --prefix=/home/rootfs/home/sqlite --target=arm-linux --host=arm-linux LD=arm-linux-ld

4. 编译:

make

5. 安装:

make install

头文件和生成的库文件将安装到:/home/rootfs/home/sqlite目录下。

6. 写自己的数据库应用

#i nclude #i nclude static int callback(void *NotUsed, int argc, char **argv, char **azColName){

int i;

for(i=0; iprintf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

}

printf("\n");

return 0;

}

int main(int argc, char **argv){

sqlite3 *db;

char *zErrMsg = 0;

int rc;

if( argc!=2 ){

fprintf(stderr, "Usage: %s DATABASE \n", argv[0]);

return 0;

}

rc = sqlite3_open(argv[1], &db);

if( rc ){

fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));

sqlite3_close(db);

return 0;

}

char *sql = " CREATE TABLE SensorData(               \

ID       INTEGER PRIMARY KEY,  \

SensorID INTEGER,              \

SiteNum  INTEGER,              \

Time     VARCHAR(12),          \

SensorParameter REAL           \

);";

//使用sql字符串指定的sql语言 创建数据表SensorData

sqlite3_exec( db , sql , 0 , callback , &zErrMsg );

//插入数据到数据表

sql = "INSERT INTO 'SensorData' VALUES( 0 , 1 , 1 ,  '200605011206', 18.9 );" ;

sqlite3_exec( db , sql , 0 , callback , &zErrMsg );

//插入数据到数据表

sql = "INSERT INTO  'SensorData'  VALUES(1 , 1 , 1 , '200605011306', 16.4 );" ;

sqlite3_exec( db , sql , 0 , callback , &zErrMsg );

int nrow = 0, ncolumn = 0;

char **azResult;

int i;

//从数据表查询数据

sql = "SELECT * FROM SensorData ";

sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );

printf( "row:%d column=%d" , nrow , ncolumn );

printf( "The result of querying is :" );

for( i=0 ; i     printf( "azResult[%d] = %s \r\n", i , azResult[i] );

}

sqlite3_free_table( azResult );

if( rc!=SQLITE_OK ){

fprintf(stderr, "SQL error: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

}

sqlite3_close(db);

return 0;

}

7. 编写Makefile

prefix=/home/rootfs/home/sqlite

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

Libs = -L${libdir} -lsqlite3 -lpthread

Cflags = -I${includedir}

CROSS_COMPILE = arm-linux-

CC = $(CROSS_COMPILE)gcc

LD = $(CROSS_COMPILE)ld

radiodb: radiodb.o

$(CC) $^ $(Libs)  -o $@

radiodb.o:radiodb.c

$(CC) $(Cflags) -c $^ -o $@

clean:

rm -rf radiodb  *.o

in:

cp radiodb /home/rootfs/home/sqlite

注意makefile里的红色字体内容可以在sqlite安装目录的lib下的pkconfig下的文件查得。



推荐阅读
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
cathy522_788
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有