2009-12-02 66 views
1

我正在运行64位Solaris 10,并且我在自己编译的Perl 5.10和Postgresql 8.4.1中安装了64位的/ usr/local。 Solaris附带安装在/ usr中的32位Postgresql 8.1.4,但未运行。当我尝试安装DBD :: Pg时,它遇到了一个问题,因为它找到的libpq.so是/ usr/lib中的32位而不是/ usr/local/pgsql/lib中的64位。如何在Solaris上编译用于Perl的64位Postgres绑定?

 
# /usr/local/bin/cpanp -i DBD::Pg 
Installing DBD::Pg (2.15.1) 
... 
ld: fatal: file /usr/lib/libpq.so: wrong ELF class: ELFCLASS32 

我首先想到的是去除捆绑Postgres的,但我读过advice against that。我敢肯定,如果我开始使用32位Perl,一切都会奏效,但我更愿意坚持我拥有的。

我注意到在CPAN输出中,makefile在链接之前设置了LD_RUN_PATH =/usr/lib。这似乎应该改变,但我不知道如何改变它(因为它全部由CPAN实现自动化),我不知道这种改变可能会产生什么其他副作用。它看起来像正确的目录/ usr/local/pgsql/lib,根本不在路径上,所以也许只是使其可见即使没有隐藏32位版本也能解决问题,但我不知道如何做到这一点,无论是。

我该如何在我拥有的环境中编译该模块,或者如何更改我的环境以便模块按原样编译?

回答

3

http://cpansearch.perl.org/src/TURNSTEP/DBD-Pg-2.15.1/Makefile.PL

简单:

默认情况下Makefile.PL使用应用程序::信息找到 PostgreSQL库的位置,包括目录。但是,如果您想自己控制它,请定义环境变量POSTGRES_INCLUDE 和POSTGRES_LIB,或者只定义POSTGRES_HOME。请注意,如果您有 支持SSL编译PostgreSQL的,你必须定义POSTGRES_LIB 环境变量,并添加 “-lssl” 给它,像这样:

export POSTGRES_LIB="/usr/local/pgsql/lib -lssl" 
+0

设置'POSTGRES_HOME =在/ usr /本地/ pgsql里'工作很好。无需删除32位Postgres。谢谢。 – 2009-12-03 14:39:47

相关问题