54

尝试从源代码进行 git 的 make install ,它不断出现错误:

 make install
* new build flags or prefix
CC credential-store.o
In file included from credential-store.c:1:
In file included from ./cache.h:8:
./gettext.h:17:11: fatal error: 'libintl.h' file not found
#       include <libintl.h>
            ^
1 error generated.
make: *** [credential-store.o] Error 1

在 lib.intl.h 上没有多少谷歌搜索出现过任何东西。这个难以捉摸的库是什么,我怎样才能得到它才能最终安装 git?

4

14 回答 14

38

在 OSX 上使用 El Capitan 和自制软件进行 FWIW,我做了一个:

1) 我不确定 El Capitan 升级是否破坏了某些东西,所以首先我确保我拥有最新的 gettext:

$ brew reinstall gettext

然后我不得不重新链接:

$ brew unlink gettext && brew link gettext --force

之后,其他工具能够找到它,生活又恢复了正常。

于 2015-11-16T18:57:42.950 回答
36

根据系统的不同,它可能是 GNU C 库 (glibc) 的一部分。

请注意,仅安装文件libintl.h不太可能对您有任何好处。

在基于 Debian 的系统(包括 Debian、Ubuntu 和 Linux Mint)上,它是libc6-dev软件包的一部分,安装有:

sudo apt-get install libc6-dev

由于您使用的是 Mac OS X,因此 Google 搜索“libintl.h OSX”会显示很多人遇到类似问题。根据INSTALLGit 来源中的文件:

设置NO_GETTEXT为禁用本地化支持并使 Git 仅使用英语。如果在系统上找不到,脚本会自动执行此autoconf操作。configurelibintl

于 2012-07-06T23:15:04.703 回答
25

我了解到 libintl 来自 libgettext。如果您已经通过 Homebrew 安装了 gettext,您会看到:

$ locate libintl
/usr/local/Cellar/gettext/0.18.3.2/lib/libintl.8.dylib
/usr/local/Cellar/gettext/0.18.3.2/lib/libintl.a
/usr/local/Cellar/gettext/0.18.3.2/lib/libintl.dylib
<..snip..>

对于“找不到-lintl的库”问题,以下对我有用

ln -s /usr/local/Cellar/gettext/0.18.3.2/lib/libintl.* /usr/local/lib/
于 2014-01-20T11:56:24.870 回答
12

如果您可以找到正确版本的 Libtools(来自http://ftp.gnu.org/gnu/libtool/),您可能会在包中找到它。

否则,您可以使用以下配置来删除此依赖项:

./configure --disable-nls
于 2012-07-06T23:17:54.317 回答
7

当包在寻找这个文件时,安装或构建 GNU gettext 包。${prefix}/include/libintl.h除其他外,此软件包“安装”

于 2012-09-16T20:54:14.920 回答
3

为了在 OSX Lion 上安装最新版本的 git,我这样做了:

*请注意,如果您还没有安装 git,您可以从网站下载并解压到~/src/git

我还建议whereis git您检查一下您是否已经安装了它,这样您就知道将前缀设置为什么。我的是,/usr/bin/git所以我将前缀设置为/usr

mkdir ~/src
git clone https://github.com/git/git.git
cd git
make configure
./configure --prefix=/usr
make
make install

通过这样做,我不必下载任何额外的库或在论坛上寻找答案。感谢 automake,我知道 git 是为我的系统设置的,并且运行起来不会有任何问题。

于 2013-05-01T22:46:09.050 回答
2

这看起来很有希望 - http://code.google.com/p/rudix/downloads/detail?name=static-libintl-0.18.1.1-5.pkg&can=2&q= - 似乎包含 libintl 作为 pkg。它为我解决了对 libintl 的依赖。

于 2012-09-04T23:12:06.533 回答
2

如果您不关心本地化并且只使用英语就可以NO_GETTEXT,请在Makefile

来自Makefile

如果您不想翻译 Git 输出,请定义 NO_GETTEXT。翻译后的 Git 需要 GNU libintl 或其他 gettext 实现,以及运行时的 libintl-perl。

于 2013-03-14T04:39:10.187 回答
1

安装macport并在终端上输入

sudo port install libcxx
于 2014-05-30T15:10:09.960 回答
1

那些试图在 2021 年 5 月之前在 macOS 上构建 Git 并希望实现国际化的人,我发现这是最好的、非破坏性的解决方案:

brew install gettext

找到 libintl 头文件和库的位置:

find /opt -name "libintl.*" -print
/opt/homebrew/include/libintl.h
/opt/homebrew/lib/libintl.dylib
/opt/homebrew/lib/libintl.8.dylib
/opt/homebrew/lib/libintl.a
/opt/homebrew/Cellar/gettext/0.21/include/libintl.h
/opt/homebrew/Cellar/gettext/0.21/lib/libintl.dylib
/opt/homebrew/Cellar/gettext/0.21/lib/libintl.8.dylib
/opt/homebrew/Cellar/gettext/0.21/lib/libintl.a

请注意 gettext 目录的位置。

现在运行以下命令(如果您的 CFLAGS 和 LDFLAGS 已经设置,它可能会略有不同。只需确保 gettext 路径包含在已经存在的任何其他内容中):

make configure
./configure "LDFLAGS=$LDFLAGS -L/opt/homebrew/Cellar/gettext/0.21/lib" \
     "CFLAGS=-I/opt/homebrew/Cellar/gettext/0.21/include"

正确配置后,您应该能够使用make.

于 2021-05-21T05:43:27.257 回答
0

如果您尝试编译 AssaultCube 并遇到此错误(应该抱怨“INTL/libintl.h”丢失),您必须从 AssaultCube 应用程序内容中获取 INTL.framework 并将其放入 /Library/Frameworks。MacPorts、HomeBrew 等的任何软件包都无法修复它。很多开源项目编译失败,非常非常烦人。

于 2014-08-15T03:56:04.803 回答
0

这个难以捉摸的库是什么,我怎样才能得到它才能最终安装 git?

来自GNU 手册

11.21 libintl.h

Libintl 是一个为程序提供本地语言支持的库。

定义宏__USE_GNU_GETTEXT, __GNU_GETTEXT_SUPPORTED_REVISION, 并声明函数 gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext, textdomain, bindtextdomain, bind_textdomain_codeset.

文档:

Gnulib 模块:gettext

如果安装了 GNU gettext,Gnulib 修复的可移植性问题:

某些平台上缺少此头文件:Mac OS X 10.5、FreeBSD 6.0、OpenBSD 3.8、Minix 3.1.8、AIX 5.1、HP-UX 11、IRIX 6.5、OSF/1 5.1、mingw、MSVC 9、Interix 3.5、BeOS .

在某些非 glibc 平台:NetBSD 3.0、Solaris 10 上,这些函数无法处理带有系统相关字符串(主要版本 1 或次要版本 1)的 GNU .mo 文件。

您可以libintl.h从 Gnulib 获得,它是GNU 可移植性库。它可以从 GNU 的 Savannah 下载。

Gnulib网页还指出:

Gnulib 不发布。它旨在用于源级别。

您可以在 Savannah 上浏览当前的 gnulib 源代码。

要使用 Gnulib,您可以使用以下 shell 命令通过匿名 Git 检索其源代码及其历史记录:

git clone git://git.savannah.gnu.org/gnulib.git

开发人员还可以通过非匿名 Git 检索源代码,以进行提交;有关详细信息,请参阅 Gnulib 的顶级 README 文件。

获得源代码后,运行 ./gnulib-tool --help。如需帮助和更多信息,请参阅下面的文档和其他资源。

于 2017-10-20T05:41:02.883 回答
0

以下对我有用:

  1. brew reinstall gettext
  2. brew unlink gettext && brew link gettext --force
  3. 要让编译器找到 libpq,您可能需要设置:
export LDFLAGS="-L/usr/local/opt/libpq/lib"
export CPPFLAGS="-I/usr/local/opt/libpq/include"

例如,在我的系统上安装 Postgis 时,我使用./configure了以下标志

./configure CPPFLAGS="-I/usr/local/opt/libpq/include" LDFLAGS="-L/usr/local/opt/libpq/lib"
于 2020-09-28T10:31:31.737 回答
0

我有一个全新安装的 OSX Catalina (10.15.7) 并且能够/usr/local/lib/libintl.*通过确保 homebrew 完全更新和升级来获得:

前:

user@mac:/usr/local/lib$ ls libintl*
ls: libintl*: No such file or directory

更新/升级自制软件:

$ brew update

...为了确保我决定再次运行它

$ brew update

...这告诉我我首先需要跑步

$ git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow

...第三次的魅力?

$ brew update

...告诉我我应该跑

$ brew upgrade

之后,/usr/local/lib/libintl.*填充:

user@mac:/usr/local/lib$ ls libintl*
libintl.8.dylib libintl.a libintl.dylib

我认为这可以满足您的需求!

于 2021-03-22T04:25:10.203 回答