5 Stimmen

Fehler beim Linken von libresolv beim Erstellen von PHP 5.2.10 aus den Quellen unter OS X

Normalerweise würde ich eine vorkompilierte PHP-Binärdatei verwenden, aber ich muss für einen bestimmten geschäftlichen Bedarf aus dem Quellcode erstellen. (Ich bin nicht der Typ, der Open-Source-Anwendungen nur zum Spaß kompiliert.)

Ich baue auf OS X 10.6 und stoße auf folgenden Fehler, wenn ich versuche make PHP 5.2.10 als ein Apache-Modul ( --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

Diese Symbole sind Teil von libresolv die unter folgender Adresse zu finden ist /usr/lib/libresolv.dylib unter OS X (und das schon seit mindestens 10.4). Beachten Sie, dass *.dylib Dateien sind das Mac-Äquivalent zu *.so Dateien auf Linux, und ich habe erfolgreich kompiliert in libiconv.dylib bereits durch die Übergabe --with-iconv=shared,/usr a ./configure die ähnliche Linker-Fehler für die iconv Bibliothek.

Wenn ich laufe ./configure erkennt es /usr/include/resolv.h und aktiviert es im Makefile. Allerdings kann ich nicht scheinen, um herauszufinden, wie die gemeinsam genutzte Bibliothek zu bekommen, um in richtig zu verknüpfen. Irgendwelche Tipps, wie man das zum Laufen bringt? Ich habe noch nie etwas wie die Übergabe von benutzerdefinierten Linker-Flags an ./configure und Google hat mir bei diesem Problem leider nicht weiterhelfen können.


Edit : Ich baue von dieser TAR-Download falls jemand versuchen möchte, den Fehler unter Snow Leopard zu reproduzieren.

4voto

Sean A.O. Harney Punkte 22965

Versuchen Sie, -lresolv zu Ihrem Makefile hinzuzufügen.

Ich hoffe, das hilft. Ich habe den Vorschlag von dieser Seite Diskussion .

3voto

chronon Punkte 558

Wenn Sie die Umgebungsvariable configure setzen, bevor Sie das configure-Skript ausführen, müssen Sie das Makefile nicht bearbeiten. Zum Beispiel:

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

Diese Lösung hat bei mir funktioniert.

2voto

Shoan Punkte 3918

Ich würde empfehlen, die Abhängigkeiten mit Hilfe von fink/ aufzulösen. macports . Bauen Sie alle Komponenten mit macports und kompilieren Sie dann php aus dem Quellcode, indem Sie die lib-Verzeichnisse nach /opt/...

Sie können php sogar direkt aus dem Quellcode mit macports erstellen.

2voto

Vasyl Marchuk Punkte 131

Für diejenigen, die nicht wissen, wo sie -lresolv hinzufügen können :)

Editieren Sie das Makefile, suchen Sie die Zeile:

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

und fügen Sie -lresolv zu dieser Zeile hinzu, etwa so:

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

Hat bei mir unter MacOS X 10.6 Snow Leopard beim Kompilieren von PHP für LiteSpeed funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X