我尝试按照这篇指南 https://medium.com/@tabvn/c-how-to-linking-uwebsocket-in-macos-xcode-9-ef3ffea880e4 在MacOS Xcode中链接uWebSocket,但是在安装uWebSocket时,出现了错误提示“找不到EpollEvent.h!请问有人能帮我解决吗?”请帮忙解决。
你说得对,编译uWebSockets可能有些棘手。经过一些尝试,我发现你需要使用libuv而不是epoll,因为epoll是Linux内核的一部分,在MacOS上不可用。
使用homebrew安装:
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命令
macOS不支持epoll,如果您想使用epoll,您需要开发Unix环境。
epoll
是一个 Linux 的东西。你得到了哪个头文件的错误?sys/epoll.h 还是 EpollEvent.h? - Shawnconfigure
或cmake
或其他一些工具;请查看文档),该步骤测试头文件和函数的存在,并相应地启用或禁用它们的使用。 - Shawn