2010-09-10 79 views
2

我试图重新编译PHP 5.3.3在Mac OS雪豹经过iconv并得到以下错误:在mac os snow leopard上编译PHP 5.3.3。与发行的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 

我知道这是老问题了,我无法找到合适的解决方案谷歌。

任何想法如何解决它将不胜感激。

我使用:

./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为好。

+0

没有你的答案,但我正在解决同样的问题。到目前为止,我已经尝试修补iconv(fabien.potencier.org/article/37/php-5-3-0-on-mac-os-10-6-snow-leopard中的说明)并编辑iconv.c文件(在bill.eccles.net/bills_words/2010/01/building-a-mac-os-x-server-106.html上的说明)我仍然看到相同的错误。如果您找到任何其他答案,请告知我。我会回复相同的。谢谢。 – 2011-02-06 21:24:32

+0

不确定,但我提交了一个错误报告,可能会有所帮助,因为我认为如果您删除openssl支持,它会起作用。也许。我们会看到会发生什么,希望5.3.4能找到解决方案。 – 2011-02-06 21:24:45

+0

尝试php 5.3.5 也许5.3.3错误 – 2011-02-06 21:25:14

回答

0

这是在Mac OS X上编译PHP的一类问题之一,涉及多个版本的库--PHP开发人员的响应几乎总是“只删除额外的库,解决了问题” - 完全忽略了事实上,经常有相当合法的原因安装了多个库。他们拒绝解决这个问题。

这篇文章:http://blog.yimingliu.com/2009/02/24/missing-library-symbols-while-compiling-php-528/

覆盖的libxml的情况下,但它是一个类似的问题。

+0

1. PHP不编译它被解释。 2.可能有多个PHP版本并排居住。只要确保Web服务器正在使用您认为应该使用的那个。即正确的路径/'php.ini'文件 – 2012-12-04 23:52:29

2

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 

解决的办法是改变的文件转/的iconv/iconv.c

打开它,并改变周围的管线185看起来像这样

  • 的#if定义(HAVE_LIBICONV)& &定义(ICONV_ALIASED_LIBICONV)
  • 的#define的iconv的iconv
  • #ENDIF

基本改变 “libiconv的” 公正 “的iconv”

该解决方案为我工作在两个PHP 5.3.3和5.3.5的雪豹10.6.4

和平

+0

这对我有用。谢谢! – MZAweb 2012-03-12 10:26:23

相关问题