什么是libintl.h,我在哪里可以得到它?

问题描述 投票:46回答:12

试图从源代码安装git,它会继续引发错误:

 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?

git osx-lion
12个回答
34
投票

根据系统的不同,它可能是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”会显示许多人遇到类似问题。根据Git资料中的INSTALL文件:

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


0
投票

如果您正在尝试编译AssaultCube并且收到此错误(应该抱怨缺少“INTL / libintl.h”),则必须从AssaultCube应用程序内容中获取INTL.framework并将其放入/ Library / Frameworks中。 MacPorts,HomeBrew等没有包可以修复它。非常讨厌有多少开源项目无法编译。


0
投票

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

来自GNU manual

11.21 libintl.h

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

定义宏__USE_GNU_GETTEXT__GNU_GETTEXT_SUPPORTED_REVISION,并声明函数gettextdgettextdcgettextngettextdngettextdcngettexttextdomainbindtextdomainbind_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平台上,这些函数无法处理具有系统相关字符串(主要版本1或次要版本1)的GNU .mo文件:NetBSD 3.0,Solaris 10。

你可以从Gnulib获得libintl.h,这是The GNU Portability Library。它可以从GNU的Savannah下载。

Gnulib web page还指出:

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

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

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

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

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

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


29
投票

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

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

$ brew reinstall gettext

然后我不得不通过这样做重新链接:

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

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


24
投票

我学会了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/

7
投票

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


5
投票

如果你能找到合适的Libtools版本(来自http://ftp.gnu.org/gnu/libtool/)你可能会在包中找到它。

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

./configure --disable-nls

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是为我的系统设置的,并且运行没有任何打嗝。


2
投票

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


2
投票

如果您不关心本地化并且只使用英语,请在NO_GETTEXT中定义Makefile

来自Makefile

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


1
投票

在终端上安装macport并输入

sudo port install libcxx
© www.soinside.com 2019 - 2024. All rights reserved.