繁体   English   中英

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

[英]Compiling PHP Intl extension on Mac Book Pro (El Capitan 10.11.4)

我正在尝试使用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

看起来像:

  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

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

也许你可以试试这个:

brew install php56-intl

您可以考虑查看这些主题( https://github.com/Homebrew/homebrew-php/issues/1701 )和( https://github.com/Homebrew/homebrew-php/issues/1710 )。 我试图重现你的错误,但我失败了。 最可能的原因是没有链接的icu4c。

尝试使用brew link --force icu4c

我尝试使用php70和

sudo pecl install intl

失败。 我尝试使用php56,一切顺利。

尝试运行php -v master ,这样的东西应该出现

C02QH2D7G8WM:workspace userone$ php -v master
PHP 5.6.20 (cli) (built: Apr  1 2016 08:53:48) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

试试运行:

brew install homebrew/php/php56-intl

我修复了这个问题,这是我的环境:

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

关键点是使用--enable-rpath重新安装ICU:

./configure --prefix=/opt/oss/icu --enable-release --enable-shared --enable-rpath --enable-tools

如果您想知道原因,请以root身份运行

otool -L $YOUR_ICU_PREFIX/lib/libicudata.dylib

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM