在没有gettext的情况下编译Git

时间:2018-06-11 15:06:48

标签: git gettext msgfmt

我试图在Debian上编译静态Git 2.17.1(适用于Linux的Windows子系统):

$ mkdir _git
$ make configure
$ ./configure --prefix=$PWD/_git NO_TCLTK=true NO_GETTEXT=true CFLAGS="${CFLAGS} -static"
$ make all

但我收到了错误

...
    MSGFMT po/build/locale/pt_PT/LC_MESSAGES/git.mo
/bin/sh: 1: msgfmt: not found
Makefile:2309: recipe for target 'po/build/locale/pt_PT/LC_MESSAGES/git.mo' failed
make: *** [po/build/locale/pt_PT/LC_MESSAGES/git.mo] Error 127

我在配置文件中有NO_GETTEXT的信息:

# Define NO_GETTEXT if you don't want Git output to be translated.

是否需要msgfmt

3 个答案:

答案 0 :(得分:1)

变量NO_GETTEXT由配置脚本设置。如果您的构建主机具有gettext运行时,则将其设置为false。

您可以通过多种方法解决此问题:

  • 在构建主机上安装gettext工具(包括msgfmt)。
  • 安装一个仅创建空输出文件的虚拟msgfmt。
  • /usr/bin/touch所有.mo文件,然后再运行make,并确保它们的最后修改时间比.po文件的时间最近。
  • 在运行make之前先修补Makefile。将变量MOFILES设置为空看起来很有希望。

您可能仍然需要修补Makefile,所以也许只使用最后一个选项即可。

答案 1 :(得分:1)

这对我有用。

make NO_GETTEXT=YesPlease

答案 2 :(得分:0)

尝试1而不是真......

https://www.atlassian.com/git/tutorials/install-git

NO_GETTEXT=1