Ошибки, связывающие libresolv при сборке PHP 5.2.10 из исходного кода на OS X

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Для начала я бы предпочел использовать предварительно скомпилированный бинарный файл PHP, но мне нужно собирать его из исходного кода для конкретной бизнес-задачи. (Я не из тех, кто собирает приложения с открытым исходным кодом только для удовольствия.)

Я работаю на OS X 10.6 и сталкиваюсь со следующей ошибкой при попытке сделать 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.

Это было полезно?

Решение

Попробуйте добавить -lresolv в ваш Makefile.

Надеюсь, это поможет. Я получил предложение из этого обсуждения .

Другие советы

Если вы установили переменную среды configure перед запуском скрипта configure, вам не нужно редактировать make-файл. Например:

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

Это решение сработало для меня.

Я бы порекомендовал разрешить зависимости, используя fink / macports . Скомпилируйте все компоненты, используя macports, а затем скомпилируйте php из исходного кода, указав директории lib в / opt / ...

Вы даже можете создавать php напрямую из исходного кода, используя macports.

Для тех, кто не может понять, куда добавить -lresolv:)

Отредактируйте Makefile, найдите строку:

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

и добавьте -lresolv к этой строке следующим образом:

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

Я работал на MacOS X 10.6 Snow Leopard во время компиляции PHP для LiteSpeed.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top