原创文章欢迎转载,请保留出处。若有任何疑问建议,欢迎回复。邮箱:Maxwell_nc@163.com
之前我们已经成功搭建了QT嵌入式开发环境(具体步骤见http://www.jb51.cc/article/p-hrvtsgjo-bhe.html),接下来我们在这个基础上搭建sqlite3嵌入式数据库开发环境。由于之前编译QT没有使用内嵌数据库的功能,这里也不再重复那麻烦的编译过程,QT也可以通过调用sqlite3的API来处理数据库,而且比较简单。
@H_419_6@ 下载源码首先上sqlite官网(@L_502_2@)下载源码sqlite-autoconf-3080704.tar 这里我用的是最新的3.8.7.4,(发博文的时候已经更新到3.8.8.3)我也试过移植3.7.17,发现差别不大,效率比新版低,API没有变化,所以这里的只要是3.x的版本差别应该也不大。
@H_419_6@ 编译X86版本这里编译sqlite3比QT简单快得多,只需要进入目录配置安装即可,基本不会出错。这个版本用于PC开发和运行所需要的库。
配置命令
./configure --prefix=/opt/sqlite_x86
安装编译
make && make install
这个版本用于ARM开发板调用动态链接库,解压另一份源码,进入目录配置:
./configure CC=/opt/FrIEndlyARM/toolschain/4.5.1/bin/arm-linux-gcc --host=arm-linux --prefix=/opt/sqlite_arm
(要注意arm-linux-gcc编译器的路径)
安装编译:make && make install
首先移植不是必须的,如果你编写的程序采用静态链接封装sqlite的话就不需要在板上移植sqlite,如果你采用动态链接的编译方式,你就需要移植sqlite到开发板,我两种编译方式下面都会说明。
移植过程很简单,把安装生成的目录/opt/sqlite_arm复制到开发板的对应目录,设置库的路径就可以了,我这里用nfs下载(配置方法http://www.jb51.cc/article/p-pbtoljii-bhe.html)到板上。
有两种方式配置库路径:
一种是永久配置,首先vi /etc/ld.so.conf
添加一行 /opt/sqlite_arm/lib 保存退出,再执行ldconfig生效。
另一种是修改LD_liBRARY_PATH这种方法必须修改/bin/setqt4env,(不能直接使用export命令,不然的话会被覆盖导致系统无法识别路径)直接修改/bin/setqt4env里的LD_liBRARY_PATH就可以了。
我们新建一个测试程序,使用sqlite编程,只需要在项目上加入:
(这里我从网上找了一个程序http://download.csdn.net/detail/pengrui18/4543238,非常感谢这位作者,我们使用这个程序做例子)
1 2 3 4 5 sqlITE_PATH=/opt/sqlite_x86 # X11和qvfb用X86版sqlite,arm选择arm版sqliteDEPENdpath += $$sqlITE_PATH/includeINCLUDEPATH += includeliBS += -L$$sqlITE_PATH/libliBS += -lsqlite3@H_419_6@ 静态编译
我们新建一个测试程序,使用sqlite编程,
在项目源码目录下拷贝对应版本的sqlite 文件/sqlite_arm/lib/libsqlite3.a和/sqlite_arm /include/sqlite3.h(这里我们用arm版本)
需要在项目上加入:liBS += -L/home/xman/PhoneTestPro/source \-lsqlite3
可以看出,静态编译这么做不方便切换调试。
这里要注意,数据库调用使用相对路径和绝对路径的问题,相对路径是相对于运行路径而不是文件所在路径或者源码路径,移植项目到开发板必须把数据库移植到板上,否则会出现错误。
下面是测试效果,
X11版的编译结果,使用动态编译:
QVFB版的编译结果,使用动态编译:
arm版的编译结果,使用静态编译:
我运行时候加上参数-qws -Font fixed
(改变字体、 防止越界问题,也可以选择其他字体)
以上是内存溢出为你收集整理的搭建QT+Sqlite3嵌入式开发环境全部内容,希望文章能够帮你解决搭建QT+Sqlite3嵌入式开发环境所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)