mingw compile libuv
mingw compile libuv
http://docs.libuv.org/en/v1.x/
https://libuv-docs-chinese.readthedocs.io/zh/latest/
https://luohaha.github.io/Chinese-uvbook/source/introduction.html
https://github.com/theanarkh/read-libuv-code
https://zhuanlan.zhihu.com/p/60508184
Compile failed in mingw64
https://github.com/libuv/libuv/commit/be8e237a8e462f8517392eccf0f94a30d16d7ef3
win: define ERROR_ELEVATION_REQUIRED for MinGW #1195
https://github.com/libuv/libuv/pull/1195
mingw32-make -f Makefile.mingw
最终在根目录下生成静态库libuv.a
需要注意的是libuv依赖库-lPsapi 和-lIPHLPAPI,在引入libuv时在后面引入他们即可
c:\Users\Administrator\Downloads\libuv-v1.10.2>mingw32-make -f Makefile.mingw gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/fs-poll.o src/fs-poll.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/inet.o src/inet.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/threadpool.o src/threadpool.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/uv-common.o src/uv-common.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/version.o src/version.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/async.o src/win/async.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/core.o src/win/core.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/detect-wakeup.o src/win/detect-wakeup.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/dl.o src/win/dl.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/error.o src/win/error.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/fs-event.o src/win/fs-event.c src/win/fs-event.c: In function 'file_info_cmp': src/win/fs-event.c:356:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (str_len != (file_name_len / sizeof(WCHAR))) ^~ gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/fs.o src/win/fs.c src/win/fs.c: In function 'fs__scandir': src/win/fs.c:876:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (status == STATUS_INVALID_PARAMETER) ^~ src/win/fs.c: In function 'fs__realpath': src/win/fs.c:1802:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (fs__realpath_handle(handle, (char**) &req->ptr) == -1) { ^~ gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/getaddrinfo.o src/win/getaddrinfo.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/getnameinfo.o src/win/getnameinfo.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/handle.o src/win/handle.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/loop-watcher.o src/win/loop-watcher.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/pipe.o src/win/pipe.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/poll.o src/win/poll.c src/win/poll.c: In function 'uv__fast_poll_cancel_poll_req': src/win/poll.c:153:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (result == SOCKET_ERROR) { ^~ gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/process-stdio.o src/win/process-stdio.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/process.o src/win/process.c In file included from src/win/req-inl.h:25:0, from src/win/process.c:34: src/win/process.c: In function 'make_program_env': src/win/process.c:736:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] assert(env_len == ptr - dst_copy); ^ src/win/process.c:796:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (var_size != len-1) { /* race condition? */ ^~ In file included from src/win/req-inl.h:25:0, from src/win/process.c:34: src/win/process.c:812:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] assert(env_len == (ptr - dst)); ^ gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/req.o src/win/req.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/signal.o src/win/signal.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/stream.o src/win/stream.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/tcp.o src/win/tcp.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/thread.o src/win/thread.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/timer.o src/win/timer.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/tty.o src/win/tty.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/udp.o src/win/udp.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/util.o src/win/util.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/winapi.o src/win/winapi.c gcc -Wall -Wextra -Wno-unused-parameter -Iinclude -Isrc -Isrc/win -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -c -o src/win/winsock.o src/win/winsock.c ar crs libuv.a src/fs-poll.o src/inet.o src/threadpool.o src/uv-common.o src/version.o src/win/async.o src/win/core.o src/win/detect-wakeup.o src/win/dl.o src/win/error.o src/win/fs-event.o src/win/fs.o src/win/getaddrinfo.o src/win/getnameinfo.o src/win/handle.o src/win/loop-watcher.o src/win/pipe.o src/win/poll.o src/win/process-stdio.o src/win/process.o src/win/req.o src/win/signal.o src/win/stream.o src/win/tcp.o src/win/thread.o src/win/timer.o src/win/tty.o src/win/udp.o src/win/util.o src/win/winapi.o src/win/winsock.o c:\Users\Administrator\Downloads\libuv-v1.10.2>
=========== End