我正在运行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位版本也能解决问题,但我不知道如何做到这一点,无论是。
我该如何在我拥有的环境中编译该模块,或者如何更改我的环境以便模块按原样编译?
设置'POSTGRES_HOME =在/ usr /本地/ pgsql里'工作很好。无需删除32位Postgres。谢谢。 – 2009-12-03 14:39:47