Я пытаюсь скомпилировать 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
Команда PHP ./configure
имеет папку iconv, указывающую на /opt/local
, поэтому используется библиотека macv 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 с ручной установкой, но я не понимаю.