Sum*_*oxy 1 osx compiling homebrew
我正在尝试在 macOS 上编译一个需要 gettext(对于 intltools)的程序。我尝试了以下命令来运行配置脚本:
LDFLAGS=-L/usr/local/opt/gettext/lib CPPFLAGS=-I/usr/local/opt/gettext/include ./configure
LDFLAGS=/usr/local/opt/gettext/lib CPPFLAGS=/usr/local/opt/gettext/include ./configure
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,它失败并显示以下错误消息
configure: error: GNU gettext tools not found; required for intltool
Run Code Online (Sandbox Code Playgroud)
在后一种情况下,它找不到 C 编译器
解决此类问题的正确方法是什么?我了解这可能与此有关
将configure因为它无法找到脚本无法gettext在当前的工具$PATH。这些工具包括xgettext,msgfmt和其他二进制文件。
在带有 Homebrew 的 macOS 上,gettextHomebrew 包实际上会安装这些二进制文件,但它们位于/usr/local/Cellar/gettext/0.18.1.1/bin目录中而不是直接位于/usr/local/bin.
这样做的原因是Homebrew 将所有“keggs”安装在“cellar”中,并且gettext是一个“keg”包。
如果一切都按预期工作,您的gettext工具应该已经从Cellar目录符号链接到/usr/local/bin,如果您的 Homebrew 设置正确,则/usr/local/bin应该在您的$PATH.
显然,这没有正确设置,所以我建议确保您之前$PATH正确设置,并且工具的链接存在从地窖到目录。修复其中一个或两个问题将为您解决此问题。/usr/local/bin/usr/bingettext/usr/local/bin
更新:根据这个超级用户的回答,gettext默认情况下,工具的符号链接可能没有正确设置。以下命令将修复它:
$ brew link gettext --force
Run Code Online (Sandbox Code Playgroud)
编译其他应用程序后,您可以使用以下命令撤消上述操作
$ brew unlink gettext
Run Code Online (Sandbox Code Playgroud)
... 如果你希望。
StackOverflow上的另一个答案继续解释说,“仅限桶”(gettext是其中之一)的 Homebrew 软件包的可执行文件没有从“地窖”链接到/usr/local/bin. 这是设计使然。这解释了为什么需要该brew link步骤才能使您的configure脚本正常工作。
$PATH默认情况下不会将“仅桶”二进制文件放入您的原因是它们可能会干扰 macOS 基本系统中已经存在的类似命名的工具。
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |