OS X üzerinde kaynak PHP 5.2.10 oluştururken libresolv bağlama hataları

4 Cevap php

Öncelikle, ben normalde PHP önceden derlenmiş ikili kullanmayı tercih ederim, ama belirli bir iş ihtiyacı için kaynak oluşturmak için gerekli. (Ben sadece tekmeler için açık kaynak uygulamaları derler tip değilim.)

Ben OS X 10.6 üzerinde inşa ediyorum ve bir Apache modülü olarak make PHP 5.2.10 çalıştığınızda aşağıdaki hata içine çalıştırıyorum (--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

Bu semboller /usr/lib/libresolv.dylib OS X üzerinde de yer almaktadır (ve at least 10,4 yana olmuştur) libresolv parçası vardır. O *.dylib dosya Linux *.so dosyaların Mac eşdeğerdir Not ve başarıyla geçirerek libiconv.dylib zaten derledik --with-iconv=shared,/usr ./configure, iconv kitaplığı için benzer bir bağlayıcı hatalar yok edilmektedir. için

I ./configure çalıştırdığınızda, bu /usr/include/resolv.h algılar ve makefile bunu sağlar. Ancak, doğru bağlantı içinde paylaşılan kütüphanesi almak için nasıl anlamaya görünüyor olamaz. Bu işe alma konusunda herhangi bir ipucu? I ./configure özel bağlayıcı bayrakları geçen böyle bir şey yapmamıştım, ve Google ne yazık ki, bu sorun için bana yardım yok olmuştur.


Herkes Snow Leopard üzerinde hata çoğaltmak için denemek istiyorsa Edit: I this TAR download adlı inşa ediyorum.

4 Cevap

Lütfen Makefile.linux-lresolv eklemeyi deneyin.

Umarım bu yardımcı olur. Ben bu gelen öneriyi aldım discussion.

Eğer yapılandırma komut dosyasını çalıştırmadan önce yapılandırma ortam değişkeni ayarlarsanız, makefile düzenlemek zorunda değilsiniz. Örneğin:

LIBS=-lresolv ./configure --with-apxs2 --with-gd (etc.)

Bu çözüm benim için çalıştı.

Ben fink / macports ile bağımlılıklarını çözmek öneriyoruz. MacPorts kullanarak tüm bileşenlerini oluşturmak ve daha sonra kaynak lib dizininin / opt / işaret itibaren php derlemek ...

Hatta MacPorts kullanarak doğrudan kaynağından php inşa edebilirsiniz.

Nerede-lresolv eklemek için bilemiyorum isteyenler için :)

Satırını bulun, Makefile düzenleyin:

EXTRA_LIBS = [...lots of libs here...]

ve bu gibi bu çizgiye-lresolv ekleyin:

EXTRA_LIBS = -lresolv [...lots of libs here...]

LiteSpeed ​​PHP derleme sırasında MacOS X 10.6 Snow Leopard benim için çalıştı.