注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

PostgreSQL 编译安装报错:"undefined reference to `gzopen64'"  

2013-05-17 09:14:59|  分类: PG案例分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


       昨天在编译安装 PostgreSQL 9.3 Beta1 时报错,这个错困扰了好长时间,记录下。

一 环境信息
OS:          CentOS release 5.4 (Final)
PostgreSQL:   9.3Beta1

  备注:开始一直怀疑与平台或 PG 版本有关,后来发现不是这样。

二 安装过程
--2.1 configure
 ./configure --prefix=/opt/pgsql9.3beta1 --with-pgport=1925 --with-wal-segsize=16 --with-wal-blocksize=64 --with-perl --with-python --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt --enable-thread-safety
 备注: configure 通过,无报错。

--2.2 gmake 
 gmake world
  备注:这个命令抛出以下错误信息:只显示最后一段。
  
 ....
gmake[4]: Leaving directory `/opt/soft_bak/postgresql-9.3beta1/src/common'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv pg_dump.o common.o pg_dump_sort.o keywords.o kwlookup.o pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o pg_backup_null.o pg_backup_tar.o pg_backup_directory.o pg_backup_utils.o parallel.o compress_io.o dumputils.o  -L../../../src/port -lpgport -L../../../src/common -lpgcommon -L../../../src/interfaces/libpq -lpq -L../../../src/port -L../../../src/common -L/usr/lib  -Wl,-rpath,'/opt/pgsql9.3beta1/lib',--enable-new-dtags  -lpgport -lpgcommon -lxslt -lxml2 -lpam -lssl -lcrypto -lz -lreadline -ltermcap -lcrypt -ldl -lm  -o pg_dump
pg_backup_archiver.o: In function `SetOutput':
pg_backup_archiver.c:(.text+0x4117): undefined reference to `gzopen64'
compress_io.o: In function `cfopen':
compress_io.c:(.text+0x202): undefined reference to `gzopen64'
collect2: ld returned 1 exit status
gmake[3]: *** [pg_dump] Error 1
gmake[3]: Leaving directory `/opt/soft_bak/postgresql-9.3beta1/src/bin/pg_dump'
gmake[2]: *** [all-pg_dump-recurse] Error 2
gmake[2]: Leaving directory `/opt/soft_bak/postgresql-9.3beta1/src/bin'
gmake[1]: *** [all-bin-recurse] Error 2
gmake[1]: Leaving directory `/opt/soft_bak/postgresql-9.3beta1/src'
gmake: *** [world-src-recurse] Error 2
  备注:网上查了些资料,说是要安装 zlib 和 zlib-devel 包, 当然也有方法规避这个问题,比如
             configure 时加上 "--without-zlib",这个功能是需要的,故不建议这么做,接着检查以下。
  
--2.3 检查是否安装 zlib 和 zlib-devel
 [root@server1 ~]# rpm -qa | grep zlib
zlib-devel-1.2.3-7.el5
jzlib-demo-1.0.7-4jpp.1
jzlib-javadoc-1.0.7-4jpp.1
jzlib-1.0.7-4jpp.1
zlib-1.2.3-7.el5  
    备注:说明已安装 1.2.3 版本的 zlib,后来咨询了系统平台比较熟悉的同事,终于发现了问题。
               问题是:系统安装了多个版本的 zlib。
 
--2.4 查看 1.2.7 版本的 zlib
 [root@server1 ~]# ll /usr/local/include/zlib.h 
-rw-r--r-- 1 root root 86717 Nov  6  2012 /usr/local/include/zlib.h
[root@mpchat-server1 ~]# 

[root@server1 ~]# head -n 5  /usr/local/include/zlib.h 
/* zlib.h -- interface of the 'zlib' general purpose compression library
  version 1.2.7, May 2nd, 2012

  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
   

--2.5 查看 1.2.3 版本的 zlib
 [root@server1 ~]# ll /usr/include/zlib.h 
-rw-r--r-- 1 root root 66188 Jul 17  2012 /usr/include/zlib.h

[root@server1 ~]# head -n 5  /usr/include/zlib.h 
/* zlib.h -- interface of the 'zlib' general purpose compression library
  version 1.2.3, July 18th, 2005

  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
   备注:可见系统安装了两个版本的 zlib,而且 1.2.7 版本通过 "rpm -qa " 命令根本查不到,应该是
             源码安装的,并且 /usr/local 目录的优先级更高,所以在编译时默认找的的 1.2.7 版本的 zlib。
             故编译通不过。
        
 
三 解决方法:
 1 临时将 /usr/local/include/zlib.h 移动其它地方 
  [root@server1 ~]# mv /usr/local/include/zlib.h /root  
  
2 cd /opt/soft_bak/postgresql-9.3beta1 && make clean

3 configure

4 gmake world ( 这时终于不报这个错了。)

5 把文件 /root/zlib.h  移回去
   [root@server1 ~]# mv /root/zlib.h /usr/local/include/

6 接下来安装软件,建库。。。
   

四 参考

  评论这张
 
阅读(9735)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016