Компиляция PHP 5.3.3 на Mac OS Snow Leopard.Проблема со связью iconv - PullRequest
2 голосов
/ 11 сентября 2010

Я пытаюсь перекомпилировать PHP 5.3.3 на Mac OS Snow Leopard с iconv и получаю следующую ошибку:

Undefined symbols:
  "_libiconv_open", referenced from:
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_substr in iconv.o
      __php_iconv_substr in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_decode in iconv.o
      __php_iconv_mime_decode in iconv.o
      _php_iconv_stream_filter_ctor in iconv.o
  "_libiconv", referenced from:
      __php_iconv_appendl in iconv.o
      __php_iconv_appendl in iconv.o
      _php_iconv_string in iconv.o
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_substr in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      _php_iconv_stream_filter_append_bucket in iconv.o
      _php_iconv_stream_filter_append_bucket in iconv.o
      _php_iconv_stream_filter_append_bucket in iconv.o
     (maybe you meant: __libiconv_version)
  "_libiconv_close", referenced from:
      _php_iconv_string in iconv.o
      __php_iconv_strlen in iconv.o
      __php_iconv_substr in iconv.o
      __php_iconv_substr in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_encode in iconv.o
      __php_iconv_mime_decode in iconv.o
      __php_iconv_mime_decode in iconv.o
      __php_iconv_mime_decode in iconv.o
      _php_iconv_stream_filter_dtor in iconv.o

Я знаю, что это старая проблема, и я не смог найти правильное решение в Google.

Будут оценены любые идеи, как это исправить.

Я использую:

./configure --prefix=/usr/local/php5 --with-iconv=/usr/local --with-apxs2=/usr/sbin/apxs --enable-pdo --with-gd=/usr/local --with-zlib --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --with-libxml-dir=/usr/local --with-curl --with-mcrypt --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql --with-mhash --with-libxml-dir=/usr/local --with-t1lib=/usr/local --with-xsl --with-freetype-dir=/usr/local --with-gettext --with-bz2=/usr --with-openssl=/usr/local/ssl --enable-bcmath --enable-calendar --enable-cgi --enable-exif --enable-ftp --enable-gd-native-ttf --enable-mbstring --enable-soap --enable-sqlite-utf8 --enable-cli --enable-wddx --enable-zip

И я также перекомпилировал libiconv 1.13.1.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2011

Hola! У меня была такая же проблема как на php 5.3.3, так и на php 5.3.5. Мои ошибки читаются так на 5.3.5

Undefined symbols:
  "_libiconv", referenced from:
      __php_iconv_strlen in iconv.o
      _php_iconv_string in iconv.o
      _php_iconv_string in iconv.o
      __php_iconv_strpos in iconv.o
      __php_iconv_appendl in iconv.o
      __php_iconv_appendl in iconv.o
      _zif_iconv_substr in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _zif_iconv_mime_encode in iconv.o
      _php_iconv_stream_filter_append_bucket in iconv.o
      _php_iconv_stream_filter_append_bucket in iconv.o
     (maybe you meant: __libiconv_version)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [libs/libphp5.bundle] Error 1

решение - это изменения в файле ext / iconv / iconv.c

откройте его и измените строку 185, чтобы она выглядела так

  • # если определено (HAVE_LIBICONV) && определено (ICONV_ALIASED_LIBICONV)
  • # определить iconv iconv
  • # ENDIF

в основном изменив "libiconv" на просто "iconv"

это решение работало для меня как на php 5.3.3, так и на 5.3.5 на snowleopard 10.6.4

мир

0 голосов
/ 13 декабря 2010

Это один из классов проблем компиляции PHP на Mac OS X, который относится к нескольким версиям библиотек - ответ разработчиков PHP почти всегда "Просто удалите лишние библиотеки. Проблема решена" - полностью игнорируя фактчто часто есть вполне законные причины для установки нескольких библиотек.Они отказываются решать проблему.

Этот пост: http://blog.yimingliu.com/2009/02/24/missing-library-symbols-while-compiling-php-528/

описывает случай libxml, но это аналогичная проблема.

...