我正在尝试安装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
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
(要设置的行gt_cv_have_gettext
位于 8047 和 8323 之间。)所以,除非我遗漏了什么,否则看起来如果所有这三件事 - - ngettext
,,- - 都存在(或成功,或其他),那么就会导致错误。dgettext
bind_textdomain_codeset
那么我遗漏了什么?是否还有其他需要设置的选项,或者我的配置中还有其他错误?或者我在脚本中发现了错误configure
?感谢您的帮助。我想在提交错误报告之前在这样的论坛上提问。
答案1
好的,我想我已经搞明白了。由于我正在“安装”我的目录下的所有内容,因此在运行之前home
,我需要bin
将该目录的子目录添加--prefix
到我的目录中。这样就可以找到它,并且我认为可以解决错误。$PATH
configure
msgfmt