我正在尝试编译 gtk 堆栈(最后一个 gtk2 版本,2.24),我收到了一堆似乎相关的错误。即__locale_t
从string.h 和time.h 中找不到,LC_ALL_MASK
也找不到(应该在locale.h 中)。
我发现所有这些问题都与__USE_XOPEN2K8
没有#defined有关。有什么__USE_XOPEN2K8
用,我怎样才能正确设置它?
例如,我是否必须将标志传递给 ./configure 以用于 glib、gtk、...,或者我是否必须在构建 gcc 或 glib c̲时已经更改某些内容?我宁愿不只是#define __USE_XOPEN2K8
在不知道它的作用的情况下散布到我的消息来源。注意我使用的是安装在非标准前缀中的 gcc-4.6.3 和 glibc-2.16.0,因为我试图让 gtk 库在只包含旧版本的旧 CentOS (5.8) 上工作。
__locale_t
另请注意,在几个地方都提到了缺失,例如这个错误报告。我可以添加#include <xlocale.h>
一些文件,但似乎正确的解决方案__USE_XOPEN2K8
是设置。
编辑:我发现这个线程描述了这个问题。显然,主机系统的头文件被“fixincluded”到新编译器的头文件中。链接的帖子建议编辑 features.h。有谁知道我之后是否必须重新编译 gcc / glibc(以及如何让它获取新的 features.h,而不是覆盖它)?