OSX 系统中配置libuv
最近在研究Node的源码,涉及到(libuv)[]。我打算将libuv library编译到自己的OS X系统中。
下载源码
git clone https://github.com/joyent/libuv
通过autotools编译
安装autotools
$ brew install autoconf
$ brew install automake
$ brew install libtool
编译
$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make install
执行make check
时会出现部分报错,可以直接忽视。
运行demo
测试编译是否成功,可以通过如下小程序进行测试。
#include <stdio.h>
#include <uv.h>
int main() {
uv_loop_t *loop = uv_loop_new();
printf(“Now quitting.\n”);
uv_run(loop, UV_RUN_DEFAULT);
return 0;
}
执行gcc ./main.cc
命令会报如下错误:
Undefined symbols for architecture x86_64:
“_uv_loop_new”, referenced from:
_main in main-66f6f5.o
“_uv_run”, referenced from:
_main in main-66f6f5.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
相关信息可以参考libraries-to-compile-libuv-on-os-x。 使用gcc -o app main.cc /usr/local/lib/libuv.a -framework CoreFoundation -framework CoreServices
即可获取执行结果。 为了方便日后学习,写了个快捷脚本。
#!/bin/bash
if [[ “$1”==”” ]];
then CMD=”gcc -o app “$1” /usr/local/lib/libuv.a -framework CoreFoundation -framework CoreServices”;
echo $CMD;
$CMD;
fi