Начнем с того, что я обычно предпочитаю использовать предварительно скомпилированный двоичный файл PHP, но для конкретной бизнес-задачи требуется сборка из исходного кода. (Я не из тех, кто собирает приложения с открытым исходным кодом только для удовольствия.)
Я работаю на OS X 10.6 и сталкиваюсь со следующей ошибкой при попытке make
PHP 5.2.10 в качестве модуля 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
Эти символы являются частью libresolv
, который включен в /usr/lib/libresolv.dylib
в OS X (и был с по крайней мере 10.4). Обратите внимание, что *.dylib
файлы - это эквивалент Mac *.so
файлов в Linux, и я уже успешно скомпилировал в libiconv.dylib
, передав --with-iconv=shared,/usr
в ./configure
, что устранило аналогичные ошибки компоновщика для библиотеки iconv
.
Когда я запускаю ./configure
, он обнаруживает /usr/include/resolv.h
и включает его в make-файл. Тем не менее, я не могу понять, как заставить общую библиотеку правильно связываться. Любые советы, как заставить это работать? Я никогда не делал ничего подобного передаче пользовательских флагов компоновщика на ./configure
, и Google, к сожалению, не помог мне в этой проблеме.
Редактировать: Я строю из этой загрузки TAR , если кто-то захочет попытаться повторить ошибку на Snow Leopard.