首先,我通常会选择使用 PHP 的预编译二进制文件,但需要从源代码构建以满足特定的业务需求。(我不是那种为了好玩而编译开源应用程序的类型。)
我在 OS X 10.6 上构建,当我尝试将make
PHP 5.2.10 作为 Apache 模块(--with-apxs2
)时遇到以下错误:
Undefined symbols:
"_res_9_dn_expand", referenced from:
_zif_dns_get_mx in dns.o
"_res_9_search", referenced from:
_zif_dns_get_mx in dns.o
_zif_dns_check_record in dns.o
"_res_9_dn_skipname", referenced from:
_zif_dns_get_mx in dns.o
_zif_dns_get_mx in dns.o
ld: symbol(s) not found
这些符号是 的一部分libresolv
,它包含在/usr/lib/libresolv.dylib
OS X 上(并且至少从10.4 开始)。请注意,*.dylib
文件是 Linux 上文件的 Mac 等价物*.so
,我libiconv.dylib
已经通过传递成功编译了--with-iconv=shared,/usr
to ./configure
,这消除了iconv
库的类似链接器错误。
当我运行时,它会在 makefile 中./configure
检测并启用它。/usr/include/resolv.h
但是,我似乎无法弄清楚如何让共享库正确链接。关于让它发挥作用的任何提示?我从来没有做过任何类似将自定义链接器标志传递./configure
给的事情,不幸的是,谷歌在这个问题上对我没有帮助。
编辑:如果有人想尝试在 Snow Leopard 上复制错误,我正在从这个 TAR 下载中构建。