在Mac Book Pro上编译PHP Intl扩展(El Capitan 10.11.4)

Bia*_*bba 8 php macos pear pecl

我正在尝试使用PECL在我的新Mac(El Capitan 10.11.4)上安装PHP Intl扩展,但是在make阶段期间存在链接错误.

以下是我采取的步骤:

  1. 已安装PEAR以在Mac上运行

  2. 编译并安装ICU库(版本51.2) /usr/local/lib

  3. 执行此命令:sudo pecl install intl出现错误(见下文).我也尝试直接从PHP源代码("ext"文件夹)编译扩展,并收到相同的错误消息.

我收到以下错误:

ld: file not found: libicudata.51.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [intl.la] Error 1
ERROR: 'make' failed
Run Code Online (Sandbox Code Playgroud)

看起来像:

  1. 文件丢失(即使它知道要查找的正确ICU库版本).也许它真的找不到文件.该-L开关和相应的开关似乎指向正确的路径/usr/local/lib路径.

  2. 然后,还存在某种架构不匹配.所以,我跑了file libicudata.51.dylib,它似乎是正确的架构.

这是file重新调整的:

$ file /usr/local/lib/libicudata.51.dylib
/usr/local/lib/libicudata.51.dylib: Mach-O 64-bit dynamically linked shared library x86_64
Run Code Online (Sandbox Code Playgroud)

以前有人碰过这个吗?或者知道如何在新的Mac Book Pro(El Capitan 10.11.4)上编译PHP的Intl扩展?我希望能有一些关于下一步要看的提示,因为我在这里有点难过.

Ber*_*lva 5

也许你可以试试这个:

brew install php56-intl
Run Code Online (Sandbox Code Playgroud)


小智 0

我解决了这个问题,这是我的环境:

操作系统:El Capitan 10.11.4
PHP:php-7.0.5
icu:55.1

关键点是使用以下命令重新安装 ICU --enable-rpath

./configure --prefix=/opt/oss/icu --enable-release --enable-shared --enable-rpath --enable-tools
Run Code Online (Sandbox Code Playgroud)

如果你想知道为什么,请以 root 身份运行

otool -L $YOUR_ICU_PREFIX/lib/libicudata.dylib
Run Code Online (Sandbox Code Playgroud)

检查第一个库是否是绝对路径。