PostgreSQL 中简易 flushbuffer 模块正确添加和使用

环境: postgresql-9.1.4
           ubuntu 12,04

flushbuffer内容 转载于  http://blog.osdba.net/?post=90  PostgreSQL 中刷shared buffer 的实验,作者:osdba(请注明来源)


select * from pg_available_entensions; 查看当前有那些可用扩展
select * from pg_extension; 查看当前安装了的扩展

现在下载了 flushbuffer, 放到 postgresql-9.1.4源码contrib下 ,进入/contrib/flushbuffer 
make 
make install
(之前已经安装好 pg ,安装目录:./configure --prefix=/home/???/pg-9.1.4)

遇到问题:
安装后在 psql 中执行 
postgres=#CREATE EXTENSION flushbuffer;
================================
error while loading shared libraries, wrong ELF class: ELFCLASS64

原因:
google后发现是编译库位数问题:系统是32为,但 flushbuffer.so库是64位的,所以就错了。
PS:可以通过如下命令来查看指定库的位数
cd /home/???/pg-9.1.4/lib/postgresql/
(1)file flushbuffer.so
flushbuffer.so: ELF 64-bit LSB shared object, x86-64
(2)还可以用二进制查看命令
od -h -N 10 flushbuffer.so
第四字段 0101 (32)
              0102 (64)

解决方法:
哎,其实是自己2了,估计作者系统是64位,在其上进行 make 的自然生成了64位库。而我下载flushbuffer文件夹中包含了作者
编译安装后的 .o .so 文件。导致自己在后面使用中出现如上错误。解决方法很简单:
删除原来的 .so .o
重新编译 make & make install 
结果编译中有错,如下 
make (致命错误 : ../../src/include/utils/elog.h: 69:28: 致命错误: utils/errcodes.h: 没有那个文件或目录  编译中断
查看pg源码,发现这个真没有,就进入 elog.h 中注释了该行, 后面正常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值