Назад | Перейти на главную страницу

Проблемы с компиляцией PHP make: *** [sapi / cli / php] Ошибка 1

Вот сообщение, которое я получаю:

Undefined symbols for architecture x86_64:
  "_iconv_close", referenced from:
      _zif_iconv_substr in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_decode in iconv.o
      _php_iconv_stream_filter_cleanup in iconv.o
      ...
  "_iconv_open", referenced from:
      _zif_iconv_substr in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_decode in iconv.o
      _php_iconv_stream_filter_factory_create in iconv.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sapi/cli/php] Error 1

Также я получал множество предупреждений во время компиляции с помощью Make.

например:

zend_operators.c:2171:34: warning: 
  'finite' is deprecated: first deprecated in OS X 10.9
  [-Wdeprecated-declarations]
                    } else if (dval1 == dval2 && !zend_finite(dval1)) {

zend_compile.c:4010:9: warning: assigning
  to 'char *' from 'const char *' discards qualifiers
  [-Wincompatible-pointer-types-discards-qualifiers]
    lcname = hash_key->arKey;
           ^ ~~~~~~~~~~~~~~~

 'unsigned char *' converts between pointers to integer types with
  different sign [-Wpointer-sign]
                                    sc = YYCURSOR;
                                       ^
Zend/zend_ini_scanner.l:479:12: warning: assigning to 'unsigned char *' from
  'char *' converts between pointers to integer types with different sign
  [-Wpointer-sign]
            YYCURSOR = sc;

Их намного больше.

Вот мои команды:

./configure --enable-fpm --with-pdo-mysql --with-mcrypt --with-zlib --with-openssl --with-curl

make

Я вхожу в систему как root.

Вот подробности:

PHP-5.5.13 Mac OS X 10.9.3

похоже, что PHP не может найти символы, потому что iconv их переименовал.

Подробнее см. По следующей ссылке:

Ответ суперпользователя от fidell

qoute:

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