错误:signal.h中未知的类型名称'pthread_attr_t'

时间:2017-10-17 22:46:56

标签: c emacs cygwin posix newlib

我试图在Cygwin上构建Emacs。 Cygwin是最新的,完全修补。由于Newlib,我使用该平台作为试验台。 Emacs失败了:

gcc -DHAVE_CONFIG_H -I. -I../lib -I../src -I../src
-I/usr/local/include -DNDEBUG -pthread -D_XOPEN_SOURCE=600    -m64 -MT
close-stream.o -MD -MP -MF .deps/close-stream.Tpo -c -o close-stream.o
close-stream.c
In file included from /usr/include/sys/signal.h:22:0,
                 from /usr/include/signal.h:6,
                 from ./signal.h:52,
                 from ./sys/select.h:107,
                 from /usr/include/sys/time.h:47,
                 from ./sys/time.h:39,
                 from ./sys/select.h:86,
                 from /usr/include/sys/types.h:68,
                 from ./sys/types.h:28,
                 from ./fcntl.h:50,
                 from binary-io.h:23,
                 from binary-io.c:3:
/usr/include/cygwin/signal.h:175:3: error: unknown type name ‘pthread_attr_t’
   pthread_attr_t *sigev_notify_attributes; /* notification attributes */
   ^~~~~~~~~~~~~~

在175左右检查/usr/include/cygwin/signal.h,我看到了:

typedef struct sigevent
{
  sigval_t sigev_value;                 /* signal value */
  int sigev_signo;                      /* signal number */
  int sigev_notify;                     /* notification type */
  void (*sigev_notify_function) (sigval_t); /* notification function */
  pthread_attr_t *sigev_notify_attributes; /* notification attributes */
} sigevent_t;

但是我在signal.h头文件中看不到包含pthread齿轮的内容。我认为标题应为<sys/types.h><pthread.h>

如果我正在解析Open Group&#39; 2.2.1 POSIX.1 SymbolsDefine _POSIX_SOURCE in cygwin's features.h?正确,将_XOPEN_SOURCE定义为600就足够了。来自开放组文档中的&#34; _XOPEN_SOURCE功能测试宏&#34; 部分:

  

由于IEEE Std 1003.1-2001的这一卷与ISO C一致   标准,并且由于_POSIX_C_SOURCE设置启用了所有功能   等于200112L由_XOPEN_SOURCE设置为等于600启用   如果_XOPEN_SOURCE是这样的话,应该不需要定义_POSIX_C_SOURCE   定义。因此,如果_XOPEN_SOURCE设置为等于600和   _POSIX_C_SOURCE设置为等于200112L,行为与之相同   如果只定义_XOPEN_SOURCE并设置为等于600 ...

我发现过去的一条消息在Errors when compiling gnutls-3.3.17 with gcc-5.4.0处类似,但它被报告为上游错误,并且它似乎是固定的。我不认为它适用于此处,因为使用pthread数据结构时没有明显的声明或定义。

任何人都可以确认事情(不是吗?)按预期工作?如果事情 按预期工作,然后提示解决失败问题 不胜感激。

提前致谢,

0 个答案:

没有答案