web-dev-qa-db-ja.com

Solaris 1064ビットでのPHP)の構成

現在、Solaris10サーバーでPHP 5.2.13を実行しています。いくつかの追加機能を有効にする必要があるため、configureスクリプトを実行しましたが、エラーが発生します。

GCCが64ビットモードでコンパイルされていることを確認するために「exportCFLAGS = "-m64"」を実行しましたが、64ビットバージョンのlibiconv.soがないようです。 '--without-iconv'を使用してスクリプトを実行しようとしましたが、サイコロはありません。これが私のconfig.logの終わりです:

configure:20017: checking for strftime
configure:20471: checking whether to enable LIBXML support
configure:20519: checking libxml2 install dir
configure:20548: checking for xml2-config path
configure:20706: checking whether libxml build works
configure:20733: gcc -o conftest -m64  -D_POSIX_PTHREAD_SEMANTICS  -R/usr/ucblib -L/usr/ucblib -R/usr/local/lib/../lib/gcc/sparc-Sun-solaris2.10/3.4.6 -L/usr/local/lib/../lib/gcc/sparc-Sun-solaris2.10/3.4.6 -R/usr/local/lib -L/usr/local/lib conftest.c 

     -lrt -lresolv -lm -lnsl -lsocket  -lgcc -lxml2 -lz -liconv -lm -lsocket -lnsl 1>&5
ld: fatal: file /usr/local/lib/libiconv.so: wrong ELF class: ELFCLASS32
ld: fatal: File processing errors. No output written to conftest
collect2: ld returned 1 exit status
configure: failed program was:
#line 20722 "configure"
#include "confdefs.h"


    char xmlInitParser();
    int main() {
      xmlInitParser();
      return 0;
    }

これを回避する方法はありますか?私は昨日からこれに頭をぶつけてきました。それが役立つ場合は、これが私の設定行です:

./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-libxml-dir=/usr/local --with-zlib=/usr/local --with-xpm-dir=/usr/local --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-apxs2=/usr/local/Apache2/bin/apxs --without-pgsql --with-jpeg-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib --with-Gd=/usr/local --enable-mbstring --enable-exif --enable-force-cgi-redirect --enable-sockets --with-png-dir=/usr/local/lib --with-curl=/usr/local --with-ldap=/usr/local --with-openssl=/usr/local/ssl --with-gettext --with-pcre-dir=/usr/local --with-freetype-dir=/usr/local --with-mssql=/usr/local/freetds --with-readline --enable-soap
3
Derek

これは常にSolarisでの私の最大の問題でした。基本的に、何かをコンパイルする場合は、次のすべてが正しいことを確認する必要があります。

  • CFLAGS/CXXFLAGS(C++の場合)
  • LDFLAGS(リンカー用)
  • おそらくLD_LIBRARY_PATH

インクルードdir(-Iで指定)とライブラリdir(-Rおよび/または-L)が、構築するアーキテクチャと一致していることを確認してください。 Solarisの場合、gccは最初に/usr/lib/usr/sfw/libなどを調べることがよくありますが、64ビットが必要な場合は、/usr/lib/64/usr/sfw/lib/64に対してコンパイルする必要があります。 、など-gcc -m64を指定するだけでは、これを行うには不十分です。

lddfileを使用して、既存のiconvライブラリのISA)を確認できます。libiconvを自​​分でコンパイルした場合は、再コンパイルする必要があります。別のバイナリソースまたは...それを再コンパイルします:-)

2
James O'Gorman

私の場合、コンパイルするにはPHP 5.4.7 PHP_LDFLAGS env varも追加する必要がありました:LDFLAGS = "-L/opt/selfcompiled/libs/64 -L/lib/64- L/usr/sfw/lib/64 -m64 "PHP_LDFLAGS = $ LDFLAGS

2
Eugene