Sqlite数据库在各种平台下的C语言应用程序开发(windows,linux
发布时间:2020-12-12 20:38:55 所属栏目:百科 来源:网络整理
导读:windows平台: 平台软件:vc++6.0 Sqlite3 for windows 在sqlite.org上下载得到最新的Windows版本的sqlite,只需要sqlite3_6_23_1.zip,sqlite-amalgamation-3_6_23_1.zip和sqlitedll-3_6_23_1.zip,其中sqlite3_6_23_1.zip中包含sqlite3.exe,在DOS命令行下
windows平台:
平台软件:vc++6.0 Sqlite3 for windows 在sqlite.org上下载得到最新的Windows版本的sqlite,只需要sqlite3_6_23_1.zip,sqlite-amalgamation-3_6_23_1.zip和sqlitedll-3_6_23_1.zip,其中sqlite3_6_23_1.zip中包含sqlite3.exe,在DOS命令行下输入“sqlite3.exe所在路径+sqlite3.exe+xx.db”即可建立xx.db数据库。接着就可以建立你需要的表了。如果有不会的sqlite3命令可以输入.help查询。sqlite-amalgamation-3_6_23_1.zip是SQLite的源码包,其中包含sqlite3.c(SQLite的API实现函数),sqlite3.h(SQLite的API),shell.c等等。sqlitedll-3_6_23_1.zip中包含了sqlite3.def(用于生成sqlite3.lib)和sqlite3.dll()。 windows程序员大多熟悉vc6.0,所以我选择在vc6.0作为开发平台,当然选择vs2005和vs2008也是可以的。首先按照常规的方法建立工程项目,在项目源文件中要包含sqlite3.h 头文件,然后将sqlite3.h复制到工程的源文件目录中。 接着,我们需要生成sqlite3.lib。在DOS命令行下输入“D:/Program Files/Microsoft Visual Studio/VC98/Bin/LIB /DEF sqlite3.def /用于存放sqlite3.lib的目录”,这样我们就得到了sqlite3.lib文件。将sqlite3.lib复制到../VC++.6.0.with.SP6/VC6CN/VC98/LIB,然后在Project Setting的Link中的对象库模块中增加sqlite.lib文件。大功告成。 Linux(redhat 9)平台: 平台软件:gcc编译器 sqlite3 for Linux 在google上搜索下载Linux版本的3.5.6版本的sqlite,得到sqlite-3.5.6.tar.gz。首先,tar zxvf sqlite-3.5.6.tar.gz -C /home cd /home mkdir sqlite3 cd /home/sqlite3/ ../sqlite-3.5.6/configure --disable-tcl --prefix=/home/sqlite3 make && make install && make doc 这样之后,我们的sqlite3的库文件目录是:/home/sqlite3/lib 可执行文件 sqlite3 的目录是: /home/sqlite3/bin 头文件 sqlite3.h 的目录是: /home/include 直接在shell命令行中输入: /home/sqlite3/bin/sqlite3 test.db 建立test.db数据库。 如果出现下面字样表明编译安装已经成功了. SQLite version 3.3.8 Enter ".help" for instructions sqlite> SQLite数据库移植: 软件:Arm-Linux交叉编译工具链(cross-2.95.3.tar.bz2) SQLite3 for Linux 硬件:s3c2410处理器 arm-linux-gcc的安装 将arm-linux-gcc的压缩包在/目录下解压缩 tar zxvf cross-2.95.3.tar.bz2 Sqlite的安装: 将sqlite-3.5.6.tar.gz下载到/root目录下。然后,通过下列命令解压缩sqlite-3.5.6.tar.gz: # tar zxvf sqlite-3.5.6.tar.gz 在sqlite-3.5.6/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过下面的命令拷贝此文件并重命名为Makefile: # cp Makefile.linux-gcc Makefile 接下来,用vi打开Makefile文件并手动修改Makefile文件的内容。 对Makefile的修改主要包括两个方面:首先是将编译器、归档工具等换成交叉工具链中的对应工具,其次是去掉与TCL相关的编译选项,因为默认情况下,将会编译SQLite3的Tcl语言绑定,但是在移植到ARM-Linux的时候并不需要和Tcl语言绑定在一起,因此将两个与TCL有关的行注释掉。Makefile文件的修改情况如表1所示。 Makefile文件的修改情况 17行:TOP = ../sqlite 修改为 TOP = . 73行:TCC = gcc -O6 修改为 TCC = arm-linux-gcc -O6 81行:AR = ar cr 修改为 AR = arm-linux-ar cr 83行:RANLIB = ranlib 修改为 RANLIB = arm-linux-ranlib 86行:MKSHLIB = gcc ?shared 修改为 MKSHLIB = arm-linux-gcc ?shared 注释掉:TCL_FLAGS = -I/home/drh/tcltk/8.4linux LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl 接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件。找到main.mk文件中的下面这一行: select.o table.o tclsqlite.o tokenize.o trigger.o / 把它替换成: select.o table.o tokenize.o trigger.o / 也就是把该行上的tclsqlite.o去掉。这样编译的时候将不会编译SQLite3的Tcl语言绑定。自此,修改工作就完成了,接下来就可以开始编译SQLite3了,这通过make命令即可完成: # make 编译完成之后,将在sqlite3.3.6/目录下生成库函数文件libsqlite3.a和头文件sqlite3.h。头文件sqlite3.h中声明了所有API接口函数原型,所有SQLite3应用程序都必须包含这个头文件。库函数文件libsqlite3.a(静态库)包含了所有API接口函数的实现,静态编译SQLite3应用程序时必须和这个库函数文件链接在一起。 然后你就可以编写你的C语言应用程序了。交叉编译时用下面的方式(假设你的源文件是test.c): # arm-linux-gcc -I /root/sqlite-3.5.6/ -L /root/sqlite-3.3.6 -o test test.c -lsqlite3 -static -I 指明了头文件sqlite3.h所在目录 -L 指明了静态库libsqlite3.a所在目录 ?lsqlite3指明要链接静态库文件libsqlite3.a -static指明是静态编译,这样你的test应用程序就可以运行在目标板上了。 接着需要将SQLite数据库移植到目标板上,在PC机的目录/usr/lib 中找到libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6三个库文件,去掉调示信息后把它们通过超级终端复制到开发板的/usr/lib目录下 Arm-linux-strip libsqlite3.so Arm-linux-strip libsqlite3.so.0 Arm-linux-strip libsqlite3.so.0.8.6 cp ?arf libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 /usr/lib 注:因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的,所以拷贝是要加-arf的 去掉/root/sqlite3.3.6目录下的sqlite3的调示信息后,将它下载到开发板的/usr/bin目录 cp sqlite3 /usr/bin 这样就可以在开发板上直接运行sqlite3了。在超级终端中可以直接运行sqlite3。 例如:/usr/bin>sqlite3 test.db sqlite>create table user(id,password,balance); sqlite>insert into user values(1,222221,1000); sqlite>select * from user; 1|222221|1000 原文地址http://forum.eepw.com.cn/thread/140274/1 注:如果需要sqlite-3.3.6tar.gz包的话,可以在我的下载里找到。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |