安装 glib 给出“你必须有 gettext 支持”

ajb*_*ajb 6 glib gettext

我正在尝试安装glib-2.37.6(也有同样的问题glib-2.32.1)并在配置过程中收到此错误:

您必须在 C 库中具有 gettext 支持,或者使用 GNU gettext 库。( http://www.gnu.org/software/gettext/gettext.html

不过,我以前构建过gettext。澄清一下,我正在尝试构建一些东西(导致gtk+),而没有在通常的地方实际安装,因为这是其他人使用的机器;相反,我使用--prefix=将所有内容放在我的主目录下的工作目录中。

我试着查看日志,看看我是否能得到关于是否需要设置其他任何东西的线索。我也尝试查看configure脚本,尽管我不是autoconf. 我发现发生错误是因为gt_cv_have_gettext没有设置为yes. 然后我寻找它应该在哪里设置,以便我可以知道它正在检查什么文件或任何内容。但是,除非我遗漏了某些东西,否则将其设置为的唯一命令就yes在此之下if

  if test "$gt_cv_func_dgettext_libc" != "yes" \
     || test "$gt_cv_func_ngettext_libc" != "yes" \
     || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
Run Code Online (Sandbox Code Playgroud)

config.log(看configure行号)表示该条件是假的,所以里面的一切(包括指令集gt_cv_have_gettext)被跳过。但是该测试似乎检查了三件事中没有任何一件遗漏。他们都不是;这是config.log错误发生前的最后一段:

configure:7982: checking for ngettext in libc
configure:8000: gcc -o conftest -g -O2   conftest.c  >&5
configure:8000: $? = 0
configure:8009: result: yes
configure:8013: checking for dgettext in libc
configure:8031: gcc -o conftest -g -O2   conftest.c  >&5
configure:8031: $? = 0
configure:8040: result: yes
configure:8047: checking for bind_textdomain_codeset
configure:8047: gcc -o conftest -g -O2   conftest.c  >&5
configure:8047: $? = 0
configure:8047: result: yes
configure:8323: checking for msgfmt
Run Code Online (Sandbox Code Playgroud)

(设置的行在gt_cv_have_gettext8047 和 8323 之间。)所以除非我遗漏了一些东西,否则看起来好像所有这三个东西 - ngettext, dgettext, --bind_textdomain_codeset都存在(或成功或其他东西),然后是错误将导致。

那么我错过了什么?是否有其他选项需要设置,或者我的配置有其他问题?还是我在configure脚本中发现了错误?谢谢你的帮助。在将其作为错误报告提交之前,我想在这样的论坛中提问。

ajb*_*ajb 6

好吧,我想我已经明白了。由于我是在我的目录下的目录中“安装”所有内容home,因此我需要在运行之前将该目录bin的子目录添加--prefix到我的. 这让它找到了,并且我认为,它解决了错误。$PATHconfiguremsgfmt

  • 很好的问题 - 感谢您发布它,并跟进解决方案以帮助其他人!通常可以指定一个前缀,其“bin”目录不在“PATH”中(或者甚至没有预先存在的“bin”目录)。但是,当构建需要使用实际安装在“$PREFIX/bin”中的工具时,该目录确实需要位于“PATH”中。 (2认同)