Компиляция PHP на OS X: iconv работает только в том случае, если принудительно до 64-битных

Я пытаюсь скомпилировать PHP, и я продолжал получать эту ошибку во время make :

 Undefined symbols for architecture x86_64: "_iconv_open", referenced from: __php_iconv_mime_decode in iconv.o __php_iconv_strlen in iconv.o _php_iconv_string in iconv.o __php_iconv_strpos in iconv.o _zif_iconv_substr in iconv.o _zif_iconv_mime_encode in iconv.o _php_iconv_stream_filter_factory_create in iconv.o ... "_iconv_close", referenced from: __php_iconv_mime_decode in iconv.o __php_iconv_strlen in iconv.o _php_iconv_string in iconv.o __php_iconv_strpos in iconv.o _zif_iconv_substr in iconv.o _zif_iconv_mime_encode in iconv.o _php_iconv_stream_filter_dtor in iconv.o ... ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 

Команда ./configure PHP имеет папку iconv, указывающую на /opt/local , поэтому используется библиотека macport iconv (которая устанавливается с использованием флага +universal ). Выполнение file :

 /opt/local/lib/libiconv.dylib: Mach-O universal binary with 2 architectures /opt/local/lib/libiconv.dylib (for architecture i386): Mach-O dynamically linked shared library i386 /opt/local/lib/libiconv.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 

Я попытался установить библиотеку iconv вручную, заставив только 64-битную архитектуру (я установил ее в /usr/local ), и она работает. Выходной file :

 /usr/local/lib/libiconv.dylib: Mach-O 64-bit dynamically linked shared library x86_64 

Почему это происходит? Мне удается создать и заставить PHP работать с ручной установкой, но я не понимаю.

Библиотека _libiconv_open MacPorts переименовывает символы в _libiconv_open и _libiconv_close . Вот почему PHP не смог найти их, а не из-за вынужденных 64-битных. Запустите nm /opt/local/lib/libiconv.dylib vs nm /usr/lib/libiconv.dylib (в 10.7.3).

В моем случае –with-iconv-dir = / usr / lib было недостаточно, я думаю, что этот параметр не работает. Поэтому я вручную переименовал /opt/local/lib/libiconv.dylib в /opt/local/lib/libiconv.dylib.bak и после того, как здание было переименовано.

  • Как получить полезные сообщения об ошибках в PHP?
  • Woocommerce: Какой крюк для замены устаревшего «woocommerce_add_order_item_meta»
  • Каков наилучший способ генерировать excel-выход в PHP?
  • Как преобразовать много операторов mysql в laravel eloquent?
  • Веб-хостинг дома на старом оборудовании
  • Разница в скорости при использовании встроенных строк против конкатенации в php5?
  • Как включить mod_rewrite в любой ОС?
  • Получать пользовательские атрибуты товара в Woocommerce
  • Использование DOMDocument + DOMXPath для удаления всех, кроме определенных тегов и атрибутов из HTML
  • Добавить столбцы в список заказов администраторов в WooCommerce
  • Подключение к mssql с помощью pdo через php и linux
  • Давайте будем гением компьютера.