ubuntu 12,04
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)
解决方法:
删除原来的 .so .o
重新编译 make & make install
结果编译中有错,如下
查看pg源码,发现这个真没有,就进入 elog.h 中注释了该行, 后面正常。