【问题标题】:How to fix "fatal error: 'sys/epoll.h' file not found" in OSX?如何修复 OSX 中的“致命错误:找不到‘sys/epoll.h’文件”?
【发布时间】:2019-08-30 16:45:21
【问题描述】:

由于本指南https://medium.com/@tabvn/c-how-to-linking-uwebsocket-in-macos-xcode-9-ef3ffea880e4,我试图在 MacOs Xcode 中链接 uWebSocket,但是,当我尝试安装 uWebSocket 时,我收到错误 EpollEvent.h not found!有人可以帮我解决这个问题吗?

【问题讨论】:

  • epoll 是 Linux 的东西。您收到关于哪个标题的错误? sys/epoll.h 还是 EpollEvent.h?
  • @Shawn 我知道 epoll 是 Linux 的东西。我只想知道如何在 MacOS 上安装 uWebSocket 或类似的东西以使用 openssl。错误是关于 sys/epoll.h 标头。
  • 通常,库构建过程的一部分是一个配置步骤(运行 configurecmake 或其他;检查文档),用于测试是否存在标头和函数并启用或禁用相应地使用它们。

标签: c++ c macos openssl uwebsockets


【解决方案1】:

你是对的,编译 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

【讨论】:

    【解决方案2】:

    macOS 不支持 epoll,如果要使用 epoll,需要开发 unix 环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多