Pregunta

Para empezar, normalmente optaría por usar un binario precompilado de PHP, pero debo construir desde una fuente para una necesidad comercial específica. (No soy del tipo que compila aplicaciones de código abierto solo por diversión).

Estoy desarrollando OS X 10.6 y me estoy ejecutando en el siguiente error cuando trato de make PHP 5.2.10 como un módulo de Apache ( --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

Estos símbolos son parte de libresolv , que se incluye en /usr/lib/libresolv.dylib en OS X (y lo ha sido desde al menos 10.4). Tenga en cuenta que los archivos * .dylib son el equivalente de Mac de los archivos * .so en Linux, y que ya he compilado con éxito en libiconv.dylib al pasar --with-iconv = shared, / usr a ./configure , que eliminó errores de enlace similares para la biblioteca iconv .

Cuando ejecuto ./configure , detecta /usr/include/resolv.h y lo habilita en el archivo make. Sin embargo, parece que no puedo descubrir cómo hacer que la biblioteca compartida se vincule correctamente. ¿Algún consejo para hacer que eso funcione? Nunca he hecho nada como pasar banderas de enlace personalizadas a ./configure , y Google no me ha ayudado en este problema, por desgracia.


Editar: Estoy compilando desde esta descarga de TAR si alguien quiere intentar replicar el error en Snow Leopard.

¿Fue útil?

Solución

Intente agregar -lresolv a su Makefile.

Espero que esto ayude. Recibí la sugerencia de esta discusión .

Otros consejos

Si configura la variable de entorno configure antes de ejecutar el script de configuración, no tiene que editar el archivo make. Por ejemplo:

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

Esta solución funcionó para mí.

Recomendaría resolver las dependencias utilizando fink / macports . Construya todos los componentes usando macports y luego compile php desde la fuente apuntando los directorios lib a / opt / ...

Incluso puedes compilar php directamente desde la fuente usando macports.

Para aquellos que no pueden averiguar dónde agregar -lresolv :)

Edite el Makefile, busque la línea:

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

y agregue -lresolv a esta línea como esta:

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

Me funcionó en MacOS X 10.6 Snow Leopard mientras compilaba PHP para LiteSpeed.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top