如何修复OSX中的“致命错误:找不到'sys / epoll.h'文件”?

时间:2019-04-09 11:38:16

标签: c++ c macos openssl uwebsockets

由于本指南https://medium.com/@tabvn/c-how-to-linking-uwebsocket-in-macos-xcode-9-ef3ffea880e4,我因此试图在MacOs Xcode中链接uWebSocket,但是当我尝试安装uWebSocket时,出现错误EpollEvent.h!有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

MacO不支持epool,如果要使用epool,则应开发一个unix env。

答案 1 :(得分:0)

是的,编译uWebSockets可能有些棘手。经过一番摸索后,我发现您需要使用libuv而不是epoll,因为epoll是Linux内核的一部分,并且在MacO上不可用。

使用自制软件安装:

brew install libuv

(可选)安装openssl和zlib(下面的makefile假定它们已安装)

brew install openssl zlib

将Makefile更改为

.PHONY: examples
examples:
# HelloWorld 
    clang -DLIBUS_USE_LIBUV -DLIBUS_USE_OPENSSL -flto -O3 -c -IuSockets/src uSockets/src/*.c uSockets/src/eventing/*.c
    clang++ -flto -O3 -c -std=c++17 -Isrc -IuSockets/src examples/HelloWorld.cpp
    clang++ -L/usr/local/lib -luv -lssl -lcrypto -lz -flto -O3 -s *.o -o HelloWorld
    rm *.o

# HelloWorldThreaded 
    clang -DLIBUS_USE_LIBUV -DLIBUS_USE_OPENSSL -flto -O3 -c -IuSockets/src uSockets/src/*.c uSockets/src/eventing/*.c
    clang++ -flto -O3 -c -std=c++17 -Isrc -IuSockets/src examples/HelloWorldThreaded.cpp
    clang++ -L/usr/local/lib -luv -lssl -lcrypto -lz -lpthread -flto -O3 -s *.o -o HelloWorldThreaded
    rm *.o

# EchoServer 
    clang -DLIBUS_USE_LIBUV -DLIBUS_USE_OPENSSL -flto -O3 -c -IuSockets/src uSockets/src/*.c uSockets/src/eventing/*.c
    clang++ -flto -O3 -c -std=c++17 -Isrc -IuSockets/src examples/EchoServer.cpp
    clang++ -L/usr/local/lib -luv -lssl -lcrypto -lz -flto -O3 -s *.o -o EchoServer
    rm *.o

# EchoServerThreaded 
    clang -DLIBUS_USE_LIBUV -DLIBUS_USE_OPENSSL -flto -O3 -c -IuSockets/src uSockets/src/*.c uSockets/src/eventing/*.c
    clang++ -flto -O3 -c -std=c++17 -Isrc -IuSockets/src examples/EchoServerThreaded.cpp
    clang++ -L/usr/local/lib -luv -lssl -lcrypto -lz -lpthread -flto -O3 -s *.o -o EchoServerThreaded
    rm *.o

并运行make