我遇到过同样的问题。我有icu4c
、开发人员工具,我应该安装的所有东西。它should已经工作了..我对这个问题很困惑,为什么它不能编译。
问题是这样的:它试图利用icu4c
文件位于 XAMPP 目录中(/Applications/XAMPP/xamppfiles/bin
)。这是 XAMPP 附带的内容,而不是您刚刚安装的内容(或通过brew install icu4c
)。它使用了错误的二进制文件进行编译!
您可以通过执行以下操作来检查它是从哪里拉取的:which icuinfo
应该是这样的/usr/local/opt/icu4c/bin/icuinfo
(路径可能会有所不同,我在 MacOS Catalina 上并使用自制软件安装)并且不是/Applications/XAMPP/xamppfiles/bin
.
我们大多数人都修改了我们的$PATH
包含 XAMPP bin 目录,并且由于 icu4c 位于/usr/local/opt/icu4c/bin
and /usr/local/opt/icu4c/sbin
,不知道它的存在。那2个具体icu4c
paths 不在您要在其中搜索文件的位置的系统路径中。因此,要么 A) 找不到它,要么 B) 它在 XAMPP bin 目录中找到该文件。
因为我们基本上有icu4c
安装在 2 个目录中,我们需要确保我们想要的目录是我们的第一个目录$PATH
在 XAMPP 之前!
SOLUTION
您应该知道如何修改 $PATH。我使用 iTerm 和 zsh (oh-my-zsh) 仅供参考。
我还添加了LDFLAGS
, CPPFLAGS
, and PKG_CONFIG_PATH
成功编译后推荐的值。
这是我的一个片段.zshrc
file:
# My cleaner way of organizing my paths
BIN=$HOME/bin
LOCAL_BIN=/usr/local/bin
HOMEBREW=/usr/local/sbin
COMPOSER=$HOME/.composer/vendor/bin
XAMPP=/Applications/XAMPP/bin
ICU4C_BIN=/usr/local/opt/icu4c/bin
ICU4C_SBIN=/usr/local/opt/icu4c/sbin
export PATH=$HOMEBREW:$COMPOSER:$ICU4C_BIN:$ICU4C_SBIN:$XAMPP:$BIN:$LOCAL_BIN:$PATH
export LDFLAGS="-L/usr/local/opt/icu4c/lib"
export CPPFLAGS="-I/usr/local/opt/icu4c/include"
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
显然你可以忽略$HOMEBREW
, $COMPOSER
等,并根据需要申请。我只是将它们分开以获得一个干净且易于理解的 $PATH。老实说,我真的建议像上面那样组织和分离你的路径。它有很大帮助!