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

时间:2012-07-06 22:59:18

标签: git osx-lion

尝试从源代码安装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?

15 个答案:

答案 0 :(得分:32)

根据系统的不同,它可能是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时自动执行此操作。

答案 1 :(得分:28)

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

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

$ brew reinstall gettext

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

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

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

答案 2 :(得分:22)

我了解到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/

答案 3 :(得分:7)

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

答案 4 :(得分:4)

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

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

./configure --disable-nls

答案 5 :(得分: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是为我的系统设置的,并且可以毫无打扰地运行。

答案 6 :(得分:2)

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

答案 7 :(得分:2)

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

中定义Makefile

来自Makefile

  

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

答案 8 :(得分:1)

安装macport并在终端上输入

sudo port install libcxx

答案 9 :(得分:0)

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

答案 10 :(得分:0)

  

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

来自GNU manual

  

11.21 libintl.h

     

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

     

定义宏__USE_GNU_GETTEXT,   __GNU_GETTEXT_SUPPORTED_REVISION,并声明函数   gettextdgettextdcgettextngettextdngettext,   dcngettexttextdomainbindtextdomain,   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。

     

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

您可以从Gnulib获取libintl.h,即The GNU Portability Library。它可以从GNU的Savannah下载。

Gnulib web page还声明:

  

Gnulib不会发布。它旨在从源头使用   水平。

     

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

     

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

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

开发人员还可以通过非匿名Git检索源代码,   出于提交的目的;有关详细信息,请参阅Gnulib's   顶级自述文件。

     

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

答案 11 :(得分: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"

答案 12 :(得分:0)

我全新安装了 OSX Catalina (10.15.7),并且能够通过确保自制软件完全更新和升级来获得 /usr/local/lib/libintl.*

之前:

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

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

答案 13 :(得分:0)

那些试图在 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 构建它。

答案 14 :(得分:-2)

如果您在Windows上使用它。然后,LibIntl库用于本地语言支持。它为程序提供支持,并且是Gettext的一部分。

因此,只需尝试安装Getttext软件包。 希望对您有所帮助。