搭建QT+Sqlite3嵌入式开发环境

搭建QT+Sqlite3嵌入式开发环境,第1张

概述前言 原创文章欢迎转载,请保留出处。若有任何疑问建议,欢迎回复。邮箱:Maxwell_nc@163.com 之前我们已经成功搭建了QT嵌入式开发环境(具体步骤见http://www.voidcn.com/article/p-hrvtsgjo-bhe.html),接下来我们在这个基础上搭建Sqlite3嵌入式数据库开发环境。由于之前编译QT没有使用内嵌数据库的功能,这里也不再重复那麻烦的编译过程 前言
原创文章欢迎转载,请保留出处。若有任何疑问建议,欢迎回复。邮箱:Maxwell_nc@163.com

之前我们已经成功搭建了QT嵌入式开发环境(具体步骤见http://www.jb51.cc/article/p-hrvtsgjo-bhe.html),接下来我们在这个基础上搭建sqlite3嵌入式数据库开发环境。由于之前编译QT没有使用内嵌数据库的功能,这里也不再重复那麻烦的编译过程,QT也可以通过调用sqlite3的API来处理数据库,而且比较简单。

下载源码

首先上sqlite官网(http://www.sqlite.org/)下载源码sqlite-autoconf-3080704.tar 这里我用的是最新的3.8.7.4,(发博文的时候已经更新到3.8.8.3)我也试过移植3.7.17,发现差别不大,效率比新版低,API没有变化,所以这里的只要是3.x的版本差别应该也不大。

编译X86版本

这里编译sqlite3比QT简单快得多,只需要进入目录配置安装即可,基本不会出错。这个版本用于PC开发和运行所需要的库。
配置命令
./configure --prefix=/opt/sqlite_x86
安装编译
make && make install

编译ARM版本

这个版本用于ARM开发板调用动态链接库,如果采用静态链接写出来的sqlite程序本身自带库,所以可以选择不编译这个版本。
解压另一份源码,进入目录配置:
./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

移植sqlite3到开发板

首先移植不是必须的,如果你编写的程序采用静态链接封装sqlite的话就不需要在板上移植sqlite(也不需要编译ARM版本),如果你采用动态链接的编译方式,你就需要移植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编程,只需要在项目上加入:

sqlITE_PATH=/opt/sqlite_x86 # X11和qvfb用X86版sqlite,arm选择arm版sqliteDEPENdpath += $$sqlITE_PATH/includeINCLUDEPATH += $$sqlITE_PATH/includeliBS += -L$$sqlITE_PATH/libliBS += -lsqlite3
前言
原创文章欢迎转载,请保留出处。若有任何疑问建议,欢迎回复。邮箱:Maxwell_nc@163.com

之前我们已经成功搭建了QT嵌入式开发环境(具体步骤见http://www.jb51.cc/article/p-hrvtsgjo-bhe.html),接下来我们在这个基础上搭建sqlite3嵌入式数据库开发环境。由于之前编译QT没有使用内嵌数据库的功能,这里也不再重复那麻烦的编译过程,QT也可以通过调用sqlite3的API来处理数据库,而且比较简单。

下载源码

首先上sqlite官网(http://www.sqlite.org/)下载源码sqlite-autoconf-3080704.tar 这里我用的是最新的3.8.7.4,(发博文的时候已经更新到3.8.8.3)我也试过移植3.7.17,发现差别不大,效率比新版低,API没有变化,所以这里的只要是3.x的版本差别应该也不大。

编译X86版本

这里编译sqlite3比QT简单快得多,只需要进入目录配置安装即可,基本不会出错。这个版本用于PC开发和运行所需要的库。
配置命令
./configure --prefix=/opt/sqlite_x86
安装编译
make && make install

编译ARM版本

这个版本用于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

移植sqlite3到开发板

首先移植不是必须的,如果你编写的程序采用静态链接封装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,非常感谢这位作者,我们使用这个程序做例子)

sqlITE_PATH=/opt/sqlite_x86 # X11和qvfb用X86版sqlite,arm选择arm版sqliteDEPENdpath += $$sqlITE_PATH/includeINCLUDEPATH += $$sqlITE_PATH/includeliBS += -L$$sqlITE_PATH/libliBS += -lsqlite3
静态编译

我们新建一个测试程序,使用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嵌入式开发环境所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1179647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存