Как исправить «фатальную ошибку: файл ‘sys / epoll.h’ не найден» в OSX?

#c #c #macos #openssl #uwebsockets

#c #c #macos #openssl #uwebsockets

Вопрос:

Я пытался связать uWebSocket в macOS Xcode из-за этого руководства https://medium.com/@tabvn/c-how-to-linking-uwebsocket-in-macos-xcode-9-ef3ffea880e4 но, когда я попытался установить uWebSocket, я получил сообщение об ошибке EpollEvent.h не найдено! Кто-нибудь может мне помочь с этим?

Комментарии:

1. epoll это Linux. О каком заголовке вы получаете сообщение об ошибке? sys / epoll.h или EpollEvent.h?

2. @Shawn Я знаю, что epoll — это Linux. Я просто хочу знать, как я могу установить uWebSocket или какой-либо эквивалент для использования openssl на macOS. Ошибка касалась заголовка sys / epoll.h.

3. Обычно частью процесса сборки библиотек является этап настройки (либо запуск configure cmake , либо что-то еще; проверьте документы), который проверяет наличие заголовков и функций и соответственно включает или отключает их использование.

Ответ №1:

Вы правы, компиляция 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

Ответ №2:

macOS не поддерживает epoll, вам следует разработать среду unix, если вы хотите использовать epoll.