如何在Solaris上为Perl编译64位Postgres绑定?

时间:2009-12-02 22:31:48

标签: perl postgresql solaris cpan

我正在运行64位Solaris 10,并且我在/ usr / local中安装了自编译的Perl 5.10和Postgresql 8.4.1,均为64位。 Solaris在/ usr中安装了32位Postgresql 8.1.4,但它没有运行。当我尝试安装DBD :: Pg时遇到问题,因为它找到的libpq.so是/ usr / lib中的32位,而不是/ usr / local / pgsql / lib中的64位。< / p>

# /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位版本,也许只是使其可见即可解决问题,但我不知道怎么做,或者。

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

1 个答案:

答案 0 :(得分:3)

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

  

简而言之:

     

默认情况下,Makefile.PL使用App :: Info来查找。的位置       PostgreSQL库和包含目录。但是,如果你愿意的话       自己控制它,定义环境变量POSTGRES_INCLUDE       和POSTGRES_LIB,或者只定义POSTGRES_HOME。请注意,如果你有       编译PostgreSQL并支持SSL,您必须定义POSTGRES_LIB       环境变量并向其添加“-lssl”,如下所示:

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