[英]Compiling PHP Intl extension on Mac Book Pro (El Capitan 10.11.4)
我正在嘗試使用PECL在我的新Mac(El Capitan 10.11.4)上安裝PHP Intl擴展,但在make
階段存在鏈接錯誤。
以下是我采取的步驟:
已安裝PEAR以在Mac上運行
編譯並將ICU庫(版本51.2)安裝到/usr/local/lib
執行此命令: 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
看起來像:
文件丟失(即使它知道要查找的正確ICU庫版本)。 也許它真的找不到文件。 -L
開關和相關開關似乎指向正確的路徑/usr/local/lib
路徑。
然后,還存在某種架構不匹配。 所以,我運行了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.