December 29, 2009

PHP 5.3 Compile Error: Undefined Symbols in iconv

Problem

When I tried to exactly replicate my production environment on my MacBook recently, compilation failed with the following message.

Undefined symbols:
"_iconv_close", referenced from:
_do_convert in gdkanji.o
_php_iconv_string 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_mime_decode in iconv.o
__php_iconv_mime_decode in iconv.o
_zif_iconv_substr in iconv.o
_zif_iconv_substr in iconv.o
_php_iconv_stream_filter_dtor in iconv.o
_zif_iconv_mime_encode in iconv.o
_zif_iconv_mime_encode in iconv.o
"_iconv", referenced from:
_do_convert in gdkanji.o
"_iconv_open", referenced from:
_do_convert in gdkanji.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_mime_decode in iconv.o
_zif_iconv_substr in iconv.o
_zif_iconv_substr in iconv.o
_zif_iconv_mime_encode in iconv.o
_zif_iconv_mime_encode in iconv.o
_php_iconv_stream_filter_factory_create in iconv.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1

Solution

Add "--with-iconv=<iconv base dir>" to your configure line, replacing <iconv base dir> with the path of the root of the install location of iconv on your system (e.g. "/opt/local").

1 comments:

Ketema said...

This doesn't work. Tried /usr /opt/local and "--with-iconv=" just in case....