Библиотеки для компиляции libuv на os x?

Я пытаюсь выучить некоторый libuv, и кажется, что есть большая книга, которая проходит через нее. Однако книга не объясняет, как ее скомпилировать. Я выполнил make на коде, который я вытащил из github, и скомпилирован с GYP, как описано в github ( https://github.com/joyent/libuv ). Однако я не уверен, какие библиотеки мне нужно включить, чтобы получить код для компиляции. Я попытался скомпилировать этот код:

/* first.c */ #include  #include  int main() { uv_loop_t *loop = uv_loop_new(); printf("Now quitting.\n"); uv_run(loop, UV_RUN_DEFAULT); return 0; } 

Я скомпилировал его с помощью следующей команды из папки libuv :

 gcc -o first first.c build/Release/libuv.a 

и я получил следующие недостающие символы:

 Undefined symbols for architecture x86_64: "_CFArrayCreate", referenced from: _uv__fsevents_init in libuv.a(fsevents.o) "_CFRunLoopAddSource", referenced from: _uv__cf_loop_runner in libuv.a(darwin.o) "_CFRunLoopGetCurrent", referenced from: _uv__cf_loop_runner in libuv.a(darwin.o) "_CFRunLoopRemoveSource", referenced from: _uv__cf_loop_runner in libuv.a(darwin.o) "_CFRunLoopRun", referenced from: _uv__cf_loop_runner in libuv.a(darwin.o) "_CFRunLoopSourceCreate", referenced from: _uv__platform_loop_init in libuv.a(darwin.o) "_CFRunLoopSourceSignal", referenced from: _uv__cf_loop_signal in libuv.a(darwin.o) "_CFRunLoopStop", referenced from: _uv__platform_loop_delete in libuv.a(darwin.o) "_CFRunLoopWakeUp", referenced from: _uv__cf_loop_signal in libuv.a(darwin.o) "_CFStringCreateWithCString", referenced from: _uv__fsevents_init in libuv.a(fsevents.o) "_CFStringGetSystemEncoding", referenced from: _uv__fsevents_init in libuv.a(fsevents.o) "_FSEventStreamCreate", referenced from: _uv__fsevents_init in libuv.a(fsevents.o) "_FSEventStreamInvalidate", referenced from: _uv__fsevents_close in libuv.a(fsevents.o) "_FSEventStreamRelease", referenced from: _uv__fsevents_close in libuv.a(fsevents.o) "_FSEventStreamScheduleWithRunLoop", referenced from: _uv__fsevents_schedule in libuv.a(fsevents.o) "_FSEventStreamStart", referenced from: _uv__fsevents_schedule in libuv.a(fsevents.o) "_FSEventStreamStop", referenced from: _uv__fsevents_close in libuv.a(fsevents.o) "_kCFRunLoopDefaultMode", referenced from: _uv__cf_loop_runner in libuv.a(darwin.o) _uv__fsevents_schedule in libuv.a(fsevents.o) ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 

Может кто-нибудь дать мне быстрый учебник о том, как построить libuv, или если что-то еще мне нужно?

    С libuv установленным через homebrew, выполните:

     $ gcc -luv main.c 

    Хорошо, понял. Я должен использовать frameworks OSX «CoreFoundation» и «CoreServices». Следующая команда успешно компилируется:

     gcc -o first first.c build/Release/libuv.a -framework CoreFoundation -framework CoreServices 

    Спасибо за решение – я боролся с той же проблемой.

    Я разработал ваш ответ, чтобы я мог компилировать и ссылаться из любой папки, используя следующие параметры:

     gcc -o first -L/my/folders/libuv/ -I/my/folders/libuv/include/ first.c -luv -framework CoreFoundation -framework CoreServices 

    Кроме того, я добавил библиотеку в Eclipse, выполнив следующие шаги:

    Чтобы добавить путь к файлу заголовка uv.h:

    Щелкните правой кнопкой мыши по проекту и выберите « Свойства» -> «C / C ++» Общие -> «Контуры и символы -> Включает» . Нажмите « Добавить ..» и в текстовом поле введите:

     /my/folders/libuv/include/ 

    Нажмите « Применить->« Хорошо » .

    Чтобы добавить библиотеку:

    На том же экране, что и выше, щелкните « Библиотеки» . Нажмите « Добавить ..» и в текстовом поле введите:

     uv 

    Чтобы добавить путь к библиотеке:

    На этом же экране нажмите « Пути библиотек» . Нажмите « Добавить» и введите в текстовое поле:

     /my/folders/libuv/ 

    Чтобы добавить frameworks:

    Щелкните правой кнопкой мыши по проекту Properties-> C / C ++ Build-> Setting-> Tool Settings-> Miscellaneous-> Mac OS X C ++ Linker . Затем в текстовом поле с заголовком Linker Flags добавьте:

     -framework CoreFoundation –framework CoreServices 

    Нажмите « Применить», затем выполните сборку.

    Вы можете использовать GYP для генерации xcodeproj для libuv (как описано в README libuv) и добавить этот xcodeproj в ваш основной проект Xcode.

    Он может быть автоматизирован (для легкого обновления) с помощью простого сценария оболочки (предполагается, что вы помещаете подмодуль libuv в Externals/libuv , но его можно изменить):

     git submodule update --init git clone https://chromium.googlesource.com/external/gyp.git Externals/libuv/build/gyp Externals/libuv/gyp_uv.py -f xcode 

    Затем вы сможете добавить libuv в качестве зависимости и в библиотеки, чтобы связать вашу цель с:

    Конфигурация Xcode

    Последнее, что нужно сделать, это рассказать Xcode, где находятся заголовки libuv:

    Конфигурация заголовков

    Посмотреть это сообщение