我试图在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 Symbols
和Define _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数据结构时没有明显的声明或定义。
任何人都可以确认事情(不是吗?)按预期工作?如果事情 按预期工作,然后提示解决失败问题 不胜感激。
提前致谢,