在配置中使用 gettext

在配置中使用 gettext

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

在第一种情况下,它失败并显示以下错误消息

configure: error: GNU gettext tools not found; required for intltool

在后一种情况下,它找不到 C 编译器

解决此类问题的正确方法是什么?我明白这可能与

答案1

configure脚本失败,因为它无法gettext在当前$PATH.这些工具包括xgettextmsgfmt和其他二进制文件。

在装有 Homebrew 的 macOS 上,gettextHomebrew 包实际上会安装这些二进制文件,但它们位于/usr/local/Cellar/gettext/0.18.1.1/bin目录中而不是直接位于/usr/local/bin.

这样做的原因是Homebrew 将所有“keggs”安装在“地窖”中,并且gettext是一个“小桶”包。

如果一切按预期工作,您的gettext工具应该已经从目录符号链接Cellar/usr/local/bin,并且如果您的 Homebrew 设置正确,则/usr/local/bin应该位于您的$PATH.

显然,这是不是设置正确,所以我建议确保您之前$PATH的设置正确,并且工具的链接存在于地窖到目录中。解决其中一个或两个问题将为您解决此问题。/usr/local/bin/usr/bingettext/usr/local/bin


更新:根据这个超级用户的回答gettext,默认情况下可能无法正确设置工具的符号链接。以下命令将修复它:

$ brew link gettext --force

一旦您编译了其他应用程序,您可以使用以下命令撤消上述操作

$ brew unlink gettext

... 如果你希望。

StackOverflow 上的另一个答案继续解释“仅桶”(gettext是其中之一)的 Homebrew 软件包的可执行文件是不是从“地窖”链接到/usr/local/bin。这是设计使然。这解释了为什么brew link需要执行此步骤才能使configure脚本正常工作。

默认情况下不会将“仅桶”二进制文件放入您的原因$PATH是它们可能会干扰 macOS 基本系统中已存在的类似命名的工具。

相关内容