Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows build #76

Open
nkkm888 opened this issue Mar 23, 2024 · 5 comments
Open

Windows build #76

nkkm888 opened this issue Mar 23, 2024 · 5 comments

Comments

@nkkm888
Copy link

nkkm888 commented Mar 23, 2024

Is there any document how to build windows binary for Angie?

@donghj2000
Copy link

pls refer to https://github.com/donghj2000/nginx1.23.2-IOCP, i have done a visual studio 2015 project of nginx.

@meteor199
Copy link

meteor199 commented Mar 26, 2024

The error occurred when compiling the Windows version using crossbuild. The compilation command is as follows:

./configure \
--with-zlib=lib/zlib-1.3.1 \
--with-pcre=lib/pcre-8.45 \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-stream \
--with-http_gzip_static_module \
--with-stream_realip_module \
--with-openssl=lib/Tongsuo-8.4.0 \
--with-openssl-opt=enable-ntls  \
--with-ntls \
--crossbuild=win64 

The error message is as follows:

cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I lib/pcre-8.45 -I lib/Tongsuo-8.4.0/.openssl/include -I lib/zlib-1.3.1 -I objs \
        -o objs/ngx_modules.o \
        objs/ngx_modules.c
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_output_chain.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_resolver.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_udp_sendmsg_chain.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from /usr/include/x86_64-linux-gnu/sys/socket.h:33,
                 from src/os/unix/ngx_posix_config.h:83,
                 from src/core/ngx_config.h:43,
                 from src/os/unix/ngx_udp_sendmsg_chain.c:8:
src/os/unix/ngx_udp_sendmsg_chain.c: In function ‘ngx_set_srcaddr_cmsg’:
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_udp_recv.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
src/os/unix/ngx_udp_sendmsg_chain.c:303:42: error: invalid application of ‘sizeof’ to incomplete type ‘struct in6_pktinfo’      
  303 |         cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
      |                                          ^~~~~~
src/os/unix/ngx_udp_sendmsg_chain.c:304:33: error: invalid application of ‘sizeof’ to incomplete type ‘struct in6_pktinfo’      
  304 |         len = CMSG_SPACE(sizeof(struct in6_pktinfo));
      |                                 ^~~~~~
In file included from src/core/ngx_core.h:54,
                 from src/os/unix/ngx_udp_sendmsg_chain.c:9:
src/os/unix/ngx_udp_sendmsg_chain.c:309:34: error: invalid application of ‘sizeof’ to incomplete type ‘struct in6_pktinfo’      
  309 |         ngx_memzero(pkt6, sizeof(struct in6_pktinfo));
      |                                  ^~~~~~
src/core/ngx_string.h:88:57: note: in definition of macro ‘ngx_memzero’
   88 | #define ngx_memzero(buf, n)       (void) memset(buf, 0, n)
      |                                                         ^
src/os/unix/ngx_udp_sendmsg_chain.c:310:13: error: invalid use of undefined type ‘struct in6_pktinfo’
  310 |         pkt6->ipi6_addr = sin6->sin6_addr;
      |             ^~
src/os/unix/ngx_udp_sendmsg_chain.c: In function ‘ngx_get_srcaddr_cmsg’:
src/os/unix/ngx_udp_sendmsg_chain.c:374:31: error: invalid use of undefined type ‘struct in6_pktinfo’
  374 |         sin6->sin6_addr = pkt6->ipi6_addr;
      |                               ^~
make[1]: *** [objs/Makefile:513: objs/src/core/ngx_output_chain.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [objs/Makefile:814: objs/src/os/unix/ngx_udp_recv.o] Error 1
make[1]: *** [objs/Makefile:751: objs/src/event/ngx_event_connect.o] Error 1
make[1]: *** [objs/Makefile:842: objs/src/os/unix/ngx_udp_sendmsg_chain.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_openssl_stapling.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_send.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:667: objs/src/core/ngx_resolver.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_connection.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_recv.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:821: objs/src/os/unix/ngx_send.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_syslog.c:9:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_process_cycle.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:940: objs/src/event/ngx_event_openssl_stapling.o] Error 1
make[1]: *** [objs/Makefile:618: objs/src/core/ngx_connection.o] Error 1
make[1]: *** [objs/Makefile:800: objs/src/os/unix/ngx_recv.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_timer.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_process.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_pipe.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:709: objs/src/core/ngx_syslog.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_openssl.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_channel.h:14,
                 from src/os/unix/ngx_channel.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_open_file_cache.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:723: objs/src/event/ngx_event_timer.o] Error 1
make[1]: *** [objs/Makefile:849: objs/src/os/unix/ngx_channel.o] Error 1
make[1]: *** [objs/Makefile:912: objs/src/os/unix/ngx_process_cycle.o] Error 1
make[1]: *** [objs/Makefile:758: objs/src/event/ngx_event_pipe.o] Error 1
make[1]: *** [objs/Makefile:863: objs/src/os/unix/ngx_process.o] Error 1
make[1]: *** [objs/Makefile:716: objs/src/event/ngx_event.o] Error 1
make[1]: *** [objs/Makefile:933: objs/src/event/ngx_event_openssl.o] Error 1
make[1]: *** [objs/Makefile:674: objs/src/core/ngx_open_file_cache.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_posted.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_readv_chain.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:730: objs/src/event/ngx_event_posted.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_cycle.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:807: objs/src/os/unix/ngx_readv_chain.o] Error 1
make[1]: *** [objs/Makefile:625: objs/src/core/ngx_cycle.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_udp_send.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
src/os/unix/ngx_errno.c: In function ‘ngx_strerror’:
src/os/unix/ngx_errno.c:30:11: error: implicit declaration of function ‘strerrordesc_np’ [-Werror=implicit-function-declaration]
   30 |     msg = strerrordesc_np(err);
      |           ^~~~~~~~~~~~~~~
src/os/unix/ngx_errno.c:30:9: error: assignment to ‘const char *’ from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion]
   30 |     msg = strerrordesc_np(err);
      |         ^
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:835: objs/src/os/unix/ngx_udp_send.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/modules/ngx_select_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:772: objs/src/os/unix/ngx_errno.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_udp.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:919: objs/src/event/modules/ngx_select_module.o] Error 1
make[1]: *** [objs/Makefile:744: objs/src/event/ngx_event_udp.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/modules/ngx_poll_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/os/unix/ngx_writev_chain.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:828: objs/src/os/unix/ngx_writev_chain.o] Error 1
make[1]: *** [objs/Makefile:926: objs/src/event/modules/ngx_poll_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_accept.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
src/event/ngx_event_accept.c: In function ‘ngx_event_accept’:
In file included from src/event/ngx_event.h:526,
                 from src/stream/ngx_stream.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/stream/ngx_stream_handler.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
src/event/ngx_event_accept.c:63:17: error: implicit declaration of function ‘accept4’; did you mean ‘accept’? [-Werror=implicit-function-declaration]
   63 |             s = accept4(lc->fd, &sa.sockaddr, &socklen, SOCK_NONBLOCK);
      |                 ^~~~~~~
      |                 accept
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:737: objs/src/event/ngx_event_accept.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/core/ngx_api.c:9:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:954: objs/src/core/ngx_api.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_log_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_return_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_access_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_upstream_hash_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_limit_conn_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_upstream_round_robin.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_upstream_least_conn_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_write_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_index_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_hash_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_proxy_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_rewrite_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_random_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_variables.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_request.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1381: objs/src/stream/ngx_stream_handler.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_script.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1472: objs/src/stream/ngx_stream_return_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_ip_hash_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1423: objs/src/stream/ngx_stream_write_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1486: objs/src/stream/ngx_stream_upstream_hash_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_core_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_copy_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_map_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1444: objs/src/stream/ngx_stream_access_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_special_response.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_upstream.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_upstream_round_robin.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1493: objs/src/stream/ngx_stream_upstream_least_conn_module.o] Error 1
make[1]: *** [objs/Makefile:1360: objs/src/stream/ngx_stream.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_stub_status_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_mirror_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_auth_basic_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1416: objs/src/stream/ngx_stream_upstream_round_robin.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_limit_conn_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_autoindex_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1367: objs/src/stream/ngx_stream_variables.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_headers_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1374: objs/src/stream/ngx_stream_script.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_script.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1395: objs/src/stream/ngx_stream_log_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_geo_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1402: objs/src/stream/ngx_stream_proxy_module.o] Error 1
make[1]: *** [objs/Makefile:1458: objs/src/stream/ngx_stream_map_module.o] Error 1
make[1]: *** [objs/Makefile:1409: objs/src/stream/ngx_stream_upstream.o] Error 1
make[1]: *** [objs/Makefile:1388: objs/src/stream/ngx_stream_core_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_split_clients_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_fastcgi_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_static_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_geo_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_set_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1437: objs/src/stream/ngx_stream_limit_conn_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_sticky_module.c:9:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1451: objs/src/stream/ngx_stream_geo_module.o] Error 1
make[1]: *** [objs/Makefile:1185: objs/src/http/modules/ngx_http_limit_conn_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_map_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_keepalive_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_header_filter_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_core_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_file_cache.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1150: objs/src/http/modules/ngx_http_index_module.o] Error 1
make[1]: *** [objs/Makefile:1465: objs/src/stream/ngx_stream_split_clients_module.o] Error 1
make[1]: *** [objs/Makefile:1325: objs/src/http/modules/ngx_http_upstream_random_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_upstream_random_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1479: objs/src/stream/ngx_stream_set_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_browser_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1241: objs/src/http/modules/ngx_http_rewrite_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_api_module.c:9:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1304: objs/src/http/modules/ngx_http_upstream_hash_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_variables.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1115: objs/src/http/ngx_http_copy_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1311: objs/src/http/modules/ngx_http_upstream_ip_hash_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_realip_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1031: objs/src/http/ngx_http_upstream_round_robin.o] Error 1
make[1]: *** [objs/Makefile:1171: objs/src/http/modules/ngx_http_auth_basic_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_chunked_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:975: objs/src/http/ngx_http_special_response.o] Error 1
make[1]: *** [objs/Makefile:1353: objs/src/http/modules/ngx_http_stub_status_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_access_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1500: objs/src/stream/ngx_stream_upstream_random_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_try_files_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1017: objs/src/http/ngx_http_script.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_upstream.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1157: objs/src/http/modules/ngx_http_mirror_module.o] Error 1
make[1]: *** [objs/Makefile:982: objs/src/http/ngx_http_request.o] Error 1
make[1]: *** [objs/Makefile:1108: objs/src/http/modules/ngx_http_headers_filter_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_prometheus_module.c:9:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_postpone_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1143: objs/src/http/modules/ngx_http_autoindex_module.o] Error 1
make[1]: *** [objs/Makefile:1430: objs/src/stream/ngx_stream_realip_module.o] Error 1
make[1]: *** [objs/Makefile:1129: objs/src/http/modules/ngx_http_static_module.o] Error 1
make[1]: *** [objs/Makefile:1332: objs/src/http/modules/ngx_http_upstream_keepalive_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_ssi_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_gzip_static_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1262: objs/src/http/modules/ngx_http_fastcgi_module.o] Error 1
make[1]: *** [objs/Makefile:1346: objs/src/http/modules/ngx_http_upstream_sticky_module.o] Error 1
make[1]: *** [objs/Makefile:1038: objs/src/http/ngx_http_file_cache.o] Error 1
make[1]: *** [objs/Makefile:1220: objs/src/http/modules/ngx_http_map_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_zone_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_log_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_parse.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_upstream_least_conn_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1213: objs/src/http/modules/ngx_http_geo_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_userid_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1297: objs/src/http/modules/ngx_http_browser_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_charset_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:968: objs/src/http/ngx_http_core_module.o] Error 1
make[1]: *** [objs/Makefile:1059: objs/src/http/modules/ngx_http_chunked_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1052: objs/src/http/ngx_http_header_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1199: objs/src/http/modules/ngx_http_api_module.o] Error 1
make[1]: *** [objs/Makefile:1178: objs/src/http/modules/ngx_http_access_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_referer_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1010: objs/src/http/ngx_http_variables.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_write_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1164: objs/src/http/modules/ngx_http_try_files_module.o] Error 1
make[1]: *** [objs/Makefile:1206: objs/src/http/modules/ngx_http_prometheus_module.o] Error 1
make[1]: *** [objs/Makefile:1024: objs/src/http/ngx_http_upstream.o] Error 1
make[1]: *** [objs/Makefile:1080: objs/src/http/ngx_http_postpone_filter_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/ngx_http_request_body.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_scgi_module.c:12:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/event/ngx_event_connect.h:15,
                 from src/stream/ngx_stream_upstream.h:16,
                 from src/stream/ngx_stream.h:26,
                 from src/stream/ngx_stream_upstream_zone_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:961: objs/src/http/ngx_http.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_ssl_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1136: objs/src/http/modules/ngx_http_gzip_static_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_range_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1087: objs/src/http/modules/ngx_http_ssi_filter_module.o] Error 1
make[1]: *** [objs/Makefile:989: objs/src/http/ngx_http_parse.o] Error 1
make[1]: *** [objs/Makefile:1318: objs/src/http/modules/ngx_http_upstream_least_conn_module.o] Error 1
make[1]: *** [objs/Makefile:1339: objs/src/http/modules/ngx_http_upstream_zone_module.o] Error 1
make[1]: *** [objs/Makefile:996: objs/src/http/modules/ngx_http_log_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_not_modified_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1045: objs/src/http/ngx_http_write_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1101: objs/src/http/modules/ngx_http_userid_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1507: objs/src/stream/ngx_stream_upstream_zone_module.o] Error 1
make[1]: *** [objs/Makefile:1094: objs/src/http/modules/ngx_http_charset_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1234: objs/src/http/modules/ngx_http_referer_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_gzip_filter_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1003: objs/src/http/ngx_http_request_body.o] Error 1
make[1]: *** [objs/Makefile:1248: objs/src/http/modules/ngx_http_ssl_module.o] Error 1
make[1]: *** [objs/Makefile:1276: objs/src/http/modules/ngx_http_scgi_module.o] Error 1
make[1]: *** [objs/Makefile:1066: objs/src/http/modules/ngx_http_range_filter_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_uwsgi_module.c:13:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_memcached_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1122: objs/src/http/modules/ngx_http_not_modified_filter_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_empty_gif_module.c:9:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1283: objs/src/http/modules/ngx_http_memcached_module.o] Error 1
make[1]: *** [objs/Makefile:1073: objs/src/http/modules/ngx_http_gzip_filter_module.o] Error 1
make[1]: *** [objs/Makefile:1269: objs/src/http/modules/ngx_http_uwsgi_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_proxy_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_limit_req_module.c:11:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1290: objs/src/http/modules/ngx_http_empty_gif_module.o] Error 1
In file included from src/event/ngx_event.h:526,
                 from src/http/ngx_http_upstream.h:15,
                 from src/http/ngx_http.h:36,
                 from src/http/modules/ngx_http_split_clients_module.c:10:
src/event/ngx_event_udp.h:46:27: error: field ‘pkt6’ has incomplete type
   46 |     struct in6_pktinfo    pkt6;
      |                           ^~~~
make[1]: *** [objs/Makefile:1192: objs/src/http/modules/ngx_http_limit_req_module.o] Error 1
make[1]: *** [objs/Makefile:1255: objs/src/http/modules/ngx_http_proxy_module.o] Error 1
make[1]: *** [objs/Makefile:1227: objs/src/http/modules/ngx_http_split_clients_module.o] Error 1
make[1]: Leaving directory '/mnt/c/Users/97981/Desktop/angie/angie-1.4.1'
make: *** [Makefile:10: build] Error 2

@VBart
Copy link
Contributor

VBart commented Mar 26, 2024

The nginx architecture was designed to run only on POSIX platforms and never really suitable for Windows. Its existing Windows support is more like a hack and in a forever beta/experimental state. Having serious limitations it is not suitable to run in production environments and can be prone to various vulnerabilities. See here for some details: http://nginx.org/en/docs/windows.html

And support for IOCP doesn't make any significant difference.

On the other hand, modern Windows systems have WSL2 that allows to run POSIX programs natively. Running Angie using WSL2 on Windows you will get better performance, greater stability and all the functionality without significant limitations.

Taking into account all these facts, we decided to deprecate this buggy/limited native Windows support in our nginx fork. Please, use WSL2 instead.

@donghj2000
Copy link

I see, thanks for your reply.
I wanted to do the IOCP version precisely because I saw that the official version made this a legacy issue. But I failed, and while the IOCP version worked just fine, it was far from ready for production. The IOCP mechanism is very different from posix.

@donghj2000
Copy link

WSL2 is indeed a good solution.

The main limitations are the poor performance of select() and poll() comparing with linux epoll and not surpporting multi workers, and I have resolved the second one.
As for image filter, GeoIP module etc, additional libraries used by them need to be recompiled on windows.

I don't know on earth how many people need to run nginx on native windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants