我正在尝试编译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在几个地方提到缺失,例如这个bug报告.我可以添加#include <xlocale.h>一些文件,但似乎正确的解决方案__USE_XOPEN2K8是设置.
编辑:我发现这个线程描述了这个问题.显然,主机系统的头文件被"fixincluded"放入新编译器的头文件中.链接的帖子建议编辑features.h.有谁知道我之后是否必须重新编译gcc/glibc(以及如何让它获取新的features.h,而不是覆盖它)?
何时__USE_GNU定义,__USE_XOPEN2K8总是定义,除非您明确定义或取消定义这些宏,否则您不能这样做.使用_GNU_SOURCE,_XOPEN_SOURCE {500,600,700,...}等宏包括第一头而不是之前.这是在glibc头中选择GNU功能集的推荐方法,同时在命令行(-D_GNU_SOURCE)上定义它.
或者,您可以尝试通过-std命令行开关(gnu89,gnu99等等)为gcc指定GNU扩展使用.
| 归档时间: |
|
| 查看次数: |
4818 次 |
| 最近记录: |