我正在运行 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 位文件。
# /usr/local/bin/cpanp -i DBD::Pg 安装 DBD::Pg (2.15.1) ... ld:致命:文件/usr/lib/libpq.so:错误的ELF类:ELFCLASS32
我的第一个想法是删除捆绑的 Postgres,但我已经阅读了反对的建议。如果我从 32 位 Perl 重新开始,我确信一切都会正常工作,但我更愿意坚持我所拥有的。
我注意到在 CPAN 输出中,makefile 在链接之前设置了 LD_RUN_PATH=/usr/lib。这似乎应该改变,但我不知道如何改变它(因为它都是由 CPAN 自动化的),而且我不知道这种改变可能会产生什么其他副作用。看起来正确的目录 /usr/local/pgsql/lib 根本不在路径上,所以即使不隐藏 32 位版本,也许只是让它可见就可以解决问题,但我不知道如何做到这一点,要么。
如何在我拥有的环境中编译此模块,或者如何更改我的环境以使模块按原样编译?