安装SQLite3引发的库问题
来源:互联网 发布:文稿校对软件 编辑:程序博客网 时间:2024/06/01 08:46
由于项目需要,需要用嵌入式数据库SQLite3搭建数据库。首先当然是要安装SQLite啦。
从官网下了安装包,读完README和INSTALL,发现安装过程很简单,还是老三式:
./configure、make 和 make install。但是在安装好之后,程序还是无法运行,出现错误:
ERROR:SQLite header and source version mismatch
百度了之后,原始是: 由于sqlite默认安装到了/usr/local/lib中,但系统有一个旧的sqlite库,
存放在/usr/lib /i386-linux-gnu里,而这个目录被搜索的优先级目测应该高于/usr/local/lib。删掉
这里面的就库文件就可以运行了。
于是,我把旧的libsqlite3.so.0,libsqlite3.so.0.8.6删除了,但是依然还是那个原来的错误。
其实, linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时
不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置
添加到库的搜索路径之中。于是,就要给sqlite库文件的路径添加进去——在 /etc/ld.so.conf 文件中
添加库的搜索路径:/usr/local/lib。
但是,这也只是对程序要链接到的库的定位,但是对于使用了共享库的程序的执行还是不够的。为了
加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取
库列表文件 /etc/ld.so.cache 从中进行搜索的。 /etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑。
它是根据 /etc/ld.so.conf 中设置的搜索路径,由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中
在一起而生成的(ldconfig 命令要以 root 权限执行)。因此,为了保证程序执行时对库的定位,在
/etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令
更新/etc/ld.so.cache 文件之后才可以。
ldconfig ,简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用。
因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下
/sbin/ldconfig使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,
也是不会被使用的.
添加完库后,最后程序运行正确:
- 安装SQLite3引发的库问题
- android 软件覆盖安装引发的问题
- sqlite3 的安装步骤:
- Ruby安装中遇到的问题 DevKit + Gem Sqlite3
- ubuntu下安装sqlite3出现的一个小问题
- sqlite3的一些问题
- 安装软件出错,注册表受限引发的问题的解决办法!
- 一个由安装顺序引发的域登录问题
- 【Linux】由telnet实验引发的安装Apache问题
- SAPOsCol引发的问题
- 学历引发的问题
- 并发引发的问题
- #define 引发的问题
- 更新引发的问题
- 计时器引发的问题
- fork引发的问题
- const_cast 引发的问题
- AsyncTask引发的问题
- IOS使用jenkins进行持续集成2
- hdu 1396 Counting Triangles
- Discuz! X自动激活或者免激活
- 高通平台CDT解析和制作方法
- 12.4.1 自定义查询表达式
- 安装SQLite3引发的库问题
- 说说JSON和JSONP,也许你会豁然开朗
- intellij idea 生成 hibernate实体类
- Linux内核编译与安装
- 新生入学一期收获
- iOS_音频下载
- 最简洁的bat文件延时方法
- LeetCode OJ 之 First Missing Positive (第一个丢失的正数)
- java并发编程:Callable、Future和FutureTask