我正在運行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