ent*_*pid 5 64-bit compile php macos
我正在尝试编译 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
Run Code Online (Sandbox Code Playgroud)
./configurePHP的命令有指向 的 iconv 文件夹/opt/local,因此使用了 macport 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
Run Code Online (Sandbox Code Playgroud)
我尝试然后手动安装 iconv 库,仅强制使用 64 位架构(我将其安装在 中/usr/local)并且它可以工作。的输出file是:
/usr/local/lib/libiconv.dylib: Mach-O 64-bit dynamically linked shared library x86_64
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我设法通过手动安装来构建和使 PHP 工作,但我不明白。
MacPorts iconv 库将符号重命名为_libiconv_open和_libiconv_close。这就是 PHP 找不到它们的原因,不是因为强制 64 位。运行nm /opt/local/lib/libiconv.dylibvs nm /usr/lib/libiconv.dylib(在 10.7.3 中)。
| 归档时间: |
|
| 查看次数: |
6635 次 |
| 最近记录: |