2

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 */
   ^~~~~~~~~~~~~~

/usr/include/cygwin/signal.h175 あたりを調べると、次のようになります。

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 の2.2.1 POSIX.1 シンボル を解析し、cygwin の features.h で _POSIX_SOURCE を定義するとしたら? _XOPEN_SOURCEに定義するだけで十分なはず600です。Open Group docs の「The _XOPEN_SOURCE Feature Test Macro」セクションから:

このボリュームの 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 に等しく設定されている場合と同じです...

gnutls-3.3.17 with gcc-5.4.0 をコンパイルするときのエラーで、類似した過去のメッセージを 1 つ見つけましたが、それはアップストリームのバグとして報告され、修正されたようです。pthread データ構造は明らかな宣言や定義なしで使用されているため、ここでは当てはまらないと思います。

物事が期待どおりに機能していることを誰かが確認できますか? 期待どおりに動作している場合は、失敗を回避するためのヒントをいただければ幸いです。

前もって感謝します、

4

0 に答える 0