OS XのソースからPHP 5.2.10をビルドする際のlibresolvのリンクエラー

StackOverflow https://stackoverflow.com/questions/1204440

  •  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はこの問題の助けにはなりませんでした。


編集: 誰かがSnow Leopardでエラーを再現しようとする場合は、このTARダウンロード

役に立ちましたか?

解決

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で作業しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top