簡體   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