Я использую 64-разрядную версию Solaris 10, и у меня есть самоскомпилированные Perl 5.10 и Postgresql 8.4.1, установленные в / usr / local, обе 64-разрядные. Solaris поставляется с 32-битным Postgresql 8.1.4, установленным в / usr, но он не работает. Когда я пытаюсь установить DBD :: Pg, он сталкивается с проблемой, потому что найденный libpq.so является 32-битным в / usr / lib, а не 64-битным в /usr/local/pgsql/lib.
# /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, но я прочитал совет против этого . Я уверен, что все будет работать, если я начну заново с 32-битным Perl, но я бы предпочел придерживаться того, что у меня есть.
Я заметил в выводе CPAN, что make-файл устанавливает LD_RUN_PATH = / usr / lib перед компоновкой. Это похоже на то, что должно измениться, но я не знаю, как это изменить (поскольку все это автоматизировано CPAN), и я не знаю, какие другие побочные эффекты могут иметь такие изменения. Похоже, что правильный каталог / usr / local / pgsql / lib вообще не находится на пути, так что, возможно, просто сделать его видимым, чтобы решить проблему, даже не скрывая 32-битную версию, но я не знаю как это сделать, либо.
Как мне скомпилировать этот модуль в моей среде, или как я могу изменить свою среду, чтобы модуль компилировался как есть?