OS XのソースからPHP 5.2.10をビルドする際のlibresolvのリンクエラー
-
05-07-2019 - |
質問
まず最初に、コンパイル済みのPHPバイナリを使用することを選択しますが、特定のビジネスニーズに合わせてソースからビルドする必要があります。 (私はキックのためだけにオープンソースのアプリをコンパイルするタイプではありません。)
OS X 10.6でビルドしていますが、Apacheモジュールとして make
PHP 5.2.10を実行しようとすると、次のエラーが発生します(-with-apxs2
):
Undefined symbols:
"_res_9_dn_expand", referenced from:
_zif_dns_get_mx in dns.o
"_res_9_search", referenced from:
_zif_dns_get_mx in dns.o
_zif_dns_check_record in dns.o
"_res_9_dn_skipname", referenced from:
_zif_dns_get_mx in dns.o
_zif_dns_get_mx in dns.o
ld: symbol(s) not found
これらのシンボルは libresolv
の一部であり、OS Xの /usr/lib/libresolv.dylib
に含まれています(少なくとも / em> 10.4)。 Linuxの *。dylib
ファイルはMacの *。so
ファイルに相当し、既に libiconv.dylib
で正常にコンパイルされていることに注意してください。 -with-iconv = shared、/ usr
を ./ configure
に渡すことで、 iconv
ライブラリの同様のリンカーエラーを排除しました。
./ configure
を実行すると、 /usr/include/resolv.h
が検出され、メイクファイルで有効になります。ただし、共有ライブラリを正しくリンクする方法を理解できないようです。それを機能させるためのヒントはありますか?カスタムリンカーフラグを ./ configure
に渡すようなことは一度もしていないので、残念ながらGoogleはこの問題の助けにはなりませんでした。
解決
Makefileに-lresolvを追加してみてください。
これが役立つことを願っています。このディスカッションから提案を受けました。
他のヒント
configureスクリプトを実行する前にconfigure環境変数を設定した場合、makefileを編集する必要はありません。例:
LIBS=-lresolv ./configure --with-apxs2 --with-gd (etc.)
このソリューションは私のために働いた。
fink / macports を使用して依存関係を解決することをお勧めします。 macportsを使用してすべてのコンポーネントをビルドし、lib dirsが/ opt / ...を指すソースからphpをコンパイルします
macportsを使用してソースからPHPを直接ビルドすることもできます。
-lresolvを追加する場所がわからない場合:)
Makefileを編集し、行を見つけます:
EXTRA_LIBS = [...lots of libs here...]
この行に次のように-lresolvを追加します:
EXTRA_LIBS = -lresolv [...lots of libs here...]
LiteSpeed用にPHPをコンパイルする際にMacOS X 10.6 Snow Leopardで作業しました。