编译不包含gettext的Git

6
我正在尝试在Debian(Windows子系统Linux)上编译静态Git 2.17.1:
$ 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吗?

那不是你获取NO_GETTEXT信息的地方,也不是你为makefile定义变量的方式。 - jthill
@jthill 那么问题的关键是如何正确地做到这一点。 - Thomas S.
4个回答

7

这对我有用。

make NO_GETTEXT=YesPlease

(这个命令)


1

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

您有几个选项可以解决此问题:

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

您可能必须在运行make之前对Makefile进行修补,因此最好选择最后一个选项。


1

这个可以运行!但是它会下载大约1125MB的东西!关键的安装步骤是“sudo apt-get install gettext”。 - Vittore Marcas
问题是关于编译它,而你谈论的是使用软件包管理器安装二进制包。 - tanaydin
你提供的解决方案是可行和成功的,但需要下载更多的软件包。我的意思是,这个问题的解决核心正是缺少这个依赖包。 - Vittore Marcas

0
请安装gettext:
sudo apt-get install gettext

手动安装 Git 需要:

sudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接