Linux下SQLite数据库移植与编程
2019-07-12 23:38发布
生成海报
//----------------------------------------------------//AUTHOR: lanyang123456//DATE: 2012-6-20//---------------------------------------------------- 环境宿主机系统 Fedora 16内核 3.1ARM开发板OK6410 Linux系统内核3.1sqlite 版本:3.7.13目录1.源码下载2.交叉编译与移植3.编程参考 1.源码下载 官网下载地址 http://www.sqlite.org/download.html选择下载项:Source Codesqlite-autoconf-3071300.tar.gz(1.76 MiB) 下载得到文件sqlite-autoconf-3071300.tar.gz 2.交叉编译与移植2.1编译解压sqlite压缩文件tar –zvxf sqlite-autoconf-3071300.tar.gz得到文件sqlite-autoconf-3071300 参考sqlite安装源文件中的INSTALL文件 If you want to _use_ a cross compiler, that generates code for aplatform different from the build platform, you should specify the"host" platform (i.e., that on which the generated programs willeventually be run) with `--host=TYPE'. 进入目录sqlite-autoconf-3071300[root@localhost ~]# cd /home/sqlite-autoconf-3071300/查看configure命令的帮助,可以得到配置参数说明。[root@localhost sqlite-autoconf-3071300]# ./configure --help`configure' configures sqlite 3.7.13 to adapt to many kinds of systems.…… [root@localhost sqlite-autoconf-3071300-cross]# ./configure --prefix=/home/sqlite_result --host=arm-linux CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc 配置参数--prefix=/home/sqlite_result指明编译后文件的安装路径配置参数--host=arm-linux指明运行的系统平台配置参数CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc指明交叉编译器的路径另外,有时会用到共享库参数---enable-shared 参数用于限定编译时产生共享库---disable-shared 参数用于限定编译不产生共享库 编译[root@localhost sqlite-autoconf-3071300-cross]# make 安装安装路径为configure配置参数--prefix=/home/sqlite_result指定的路径/home/sqlite_result[root@localhost sqlite-autoconf-3071300-cross]# make install 查看安装目录[root@localhost sqlite-autoconf-3071300-cross]# ls /home/sqlite_result/bin include lib share bin目录下是可执行文件sqlite3include目录下是头文件sqlite3.h sqlite3ext.hlib目录下是编译生成的库文件,包括静态库和共享库。share目录下是帮助文档man 对交叉编译后的文件进行适当处理使用file命令查看文件类型等信息。[root@localhost bin]# file sqlite3sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped[root@localhost bin]# ls -l sqlite3-rwxr-xr-x. 1 root root 94462 6月 17 13:14 sqlite3[root@localhost bin]# /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-strip sqlite3arm-linux-strip用于剥离调试信息,使文件变小。[root@localhost bin]# ls -l sqlite3-rwxr-xr-x. 1 root root 46112 6月 17 14:09 sqlite3处理后文件明显缩小,这样更适合开发板上使用。[root@localhost bin]#[root@localhost bin]# file sqlite3sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, stripped其他需要移植的文件如库文件等,也可进行此操作,以减小文件大小。2.2移植需要移植的文件有可执行文件sqlite3 库文件libsqlite3.so.0.8.6,如果要用到静态库,静态库要需要移植。移植可执行文件拷贝可执行文件到开发板系统标准路径[root@FORLINX6410]# cp sqlite3 /usr/bin 移植库文件拷贝共享库文件到开发板系统标准库路径 /lib或者/usr/lib[root@FORLINX6410]# cp libsqlite3.so.0.8.6 /usr/lib 创建共享库的软链接[root@FORLINX6410]# cd /usr/lib[root@FORLINX6410]# ln -s libsqlite3.so.0.8.6 libsqlite3.so.0[root@FORLINX6410]# ln -s libsqlite3.so.0.8.6 libsqlite3.so[root@FORLINX6410]# ls -l |grep sqlitelrwxrwxrwx 1 root root 19 Jun 17 11:36 libsqlite3.so -> libsqlite3.so.0.8.6lrwxrwxrwx 1 root root 19 Jun 17 11:35 libsqlite3.so.0 -> libsqlite3.so.0.8.6-rwxr-xr-x 1 root root 1771945 Jun 17 11:32 libsqlite3.so.0.8.6[root@FORLINX6410]# [root@FORLINX6410]# sqlite3 mydatabasesqlite3: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory[root@FORLINX6410]# 缺少库文件libncurses.so.5这需要下载ncurses库文件源码并交叉编译,详细过程见ncurses库的移植http://blog.csdn.net/lanyang123456/article/details/7680710。 交叉编译得到libncurses.so.5.0库文件 将交叉编译得到的库文件拷贝到开发板系统标准库路径 /lib或者 /usr/lib[root@FORLINX6410]# cp libncurses.so.5.0 /lib为共享库创建软链接[root@FORLINX6410]# ln -s libncurses.so.5.0 libncurses.so.5[root@FORLINX6410]# ln -s libncurses.so.5 libncurses.so [root@FORLINX6410]# sqlite3 mySQLite version 3.7.13 2012-06-11 02:05:22Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite> .show echo: off explain: off headers: off mode: listnullvalue: "" output: stdoutseparator: "|" stats: off width:sqlite> 3.编程 程序源文件见sqlite3嵌入式编程实例http://download.csdn.net/detail/lanyang123456/4384426。 在宿主PC机上对源文件进行交叉编译 [root@localhost arm-linux]# /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc -L/home/sqlite_result/lib -lsqlite3 -o mysqlite3 mysqlite.c编译选项-L/home/sqlite_result/lib指明编译使用的库的路径上面提到sqlite交叉编译得到的库安装在目录 /home/sqlite_result/lib下 编译选项-lsqlite3指明编译使用的库的名字 拷贝编程用到的头文件、源文件以及可执行文件到开发板[root@FORLINX6410]# cp sqlite3.h /home/sqlite_prog/[root@FORLINX6410]# cp sqlite3ext.h /home/sqlite_prog/[root@FORLINX6410]# cp mysqlite.c /home/sqlite_prog/[root@FORLINX6410]# cp mysqlite3 /home/sqlite_prog/[root@FORLINX6410]# cd /home/sqlite_prog/[root@FORLINX6410]# lsmysqlite.c mysqlite3 sqlite3.h sqlite3ext.h为了方便查看运行结果,创建文件myfile。[root@FORLINX6410]# touch myfile将运行结果输出到myfile文件[root@FORLINX6410]# ./mysqlite3 >myfile [root@FORLINX6410]# lsmydatabase.db mysqlite.c sqlite3.hmyfile mysqlite3 sqlite3ext.h其中mydatabase.db是创建的数据库文件。查看运行结果[root@FORLINX6410]#vi myfileYou have opened a sqlite3 database successfully!row:4 column = 5……详细结果见执行结果文件http://download.csdn.net/detail/lanyang123456/4384426。 参考 SQLite 官网
http://www.sqlite.org/ SQLite中文网
http://www.sqlite.com.cn/ SQLite3 使用教学
数据库使用说明
http://www.sqlite.com.cn/MySqlite/4/378.Html 嵌入式数据库SQLite的一份教程http://www.sqlite.com.cn/MySqlite/3/380.Html sqlite3编程笔记
.http://blog.csdn.net/wl_haanel/article/details/6231417 SQLite3 API编程手册
http://www.cnblogs.com/hnrainll/archive/2011/09/08/2170506.html 几篇关于嵌入式数据库的简介,包括SQLite Berkeley DBhttp://blog.chinaunix.net/uid/9563036/frmd/23812.html 嵌入式数据库SQLite移植到S3C2410的方法 .http://blog.csdn.net/liuzhidong123/article/details/6827379 sqlite嵌入式数据库在
arm-linux下的编译全攻略
http://blog.chinaunix.net/uid-9563036-id-352307.html 嵌入式数据库sqlite在Motorola Coldfire + uclinux下的移植http://www.sqlite.com.cn/MySqlite/6/379.Html SQLITE3 使用总结
windows下编程接口说明
http://hi.baidu.com/llhg/blog/item/0c3c0da89d83d6b3cb130cdf.html sqlite3使用简介
Windows下编程接口说明
http://www.cnblogs.com/kfqcome/archive/2011/06/27/2136999.html Sqlite快速上手使用指南
Windows下
SQLite图形界面使用
http://www.cnblogs.com/yjmyzz/archive/2010/02/18/1669210.html Linux configure关于交叉编译的参数设置
http://tech.ccidnet.com/art/2583/20080307/1383653_1.html arm-linux-striphttp://blog.sina.com.cn/s/blog_6035432c0100jnuc.html欢迎关注并加入物联网行业联盟,积累行业人脉和资源。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮