No.3142 PHPのdll生成時undefined reference toについて |
発言者: 青空高志 発言日: 2006 02/21 11:23 |
お知恵を拝借させてください。 CYGWIN+Apache+PostgreSQL+PHPを構築しています。 シンボリックリンクを多用するためにCYGWINでApacheを運用する必要があり、ネイティブ版では実現できません。 ネイティブ版による同構成とPostgreSQLのみCYGWINで稼動させてApache、PHPネイティブ版を使用する環境構築は過去に実績があり動いています。 上記の目的により、すべてソースからのビルドを行っていますが、PHPのmake後のdll生成でリファレンスエラーに苦慮しています。 phpのconfigureに「--with-pgsql=ライブラリの場所」を付加するとdll生成時に次のエラーを表示します。 Creating library file: libphp4.dll.a libphp4.a(pgsql.o): In function `_close_pgsql_link': /usr/src/php-4.4.2/ext/pgsql/pgsql.c:277: undefined reference to `_PQclear' /usr/src/php-4.4.2/ext/pgsql/pgsql.c:277: undefined reference to `_PQgetResult' (以下同様に200行ほど表示) gccコマンドラインは、次のように使用しています。 $ gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive -lcrypt 各デーモンのバージョンを変更したり、バイナリーパッケージを使用したりと方策を尽くしましたが、個々のデーモンはmakeに問題もなく、個別のテストランでも正常に機能していますので、PHPのビルド以降、またはdll生成時の問題と考えています。 phpコンパイルオプションに--with-pgsqlを使用しなければ、dllは生成され、make install後の動作は正常です。 libphp4.aおよびpgsql.cには、エラー表示される関数名エントリーは存在しますので、参照方法などに起因した問題であると予想していますが、行き詰っております。 解決策をお持ちの方は、ぜひご教示ください。お願いします。 http://www.sixnine.net/cygwin/translation/cygwin-ug-net/dll.html によりますところの、4.3.2にありますdllのストリップとの関連も疑っていますが、対処法が思い浮かびません。 よろしくお願いします。 以下は、環境です。 $ cygcheck -cd cygwin gcc Cygwin Package Information Package Version cygwin 1.5.19-4 gcc 3.4.4-1 Apache 1.3.33-2、1.3.34などのソース、binパッケージをテスト PostgreSQL 8.1.0、8.0.4など PHP 4.4.2(cygwinソースより) PostgreSQL依存パッケージは次のように確認 $ grep -A10 '@ postgresql' /cygdrive/c/CYGWINSOURCE/ftp%3a%2f%2fring.exp.fujixerox.co.jp%2farchives%2fpc%2fgnu-win32/setup.ini | grep requires requires: crypt cygwin libncurses8 libreadline6 libintl3 openssl zlib バージョンチェック $ cygcheck -cd `grep -A10 '@ postgresql' /cygdrive/c/CYGWINSOURCE/ftp%3a%2f%2fring.exp.fujixerox.co.jp%2farchives%2fpc%2fgnu-win32/setup.ini | grep requires | gawk '{$1="";print}'` Cygwin Package Information Package Version crypt 1.1-1 cygwin 1.5.19-4 libintl3 0.14.5-1 libncurses8 5.4-4 libreadline6 5.1-3 openssl 0.9.8a-1 zlib 1.2.3-1 |
▼関連発言 |