本篇文章主要介绍在macOS上如何完成libuv的编译环境搭建

一、libuv本地编译

参照官方README,下载libuv、gyp。

  1. git clone git@github.com:libuv/libuv.git
  2. cd libuv
  3. git clone https://chromium.googlesource.com/external/gyp build/gyp

gyp 是一个用来生成项目文件的工具,生成项目文件后可以调用GCC、vsbuild、Xcode 等编译平台来编译。

下载gyp仓库时,可能会因为某墙原因,报如下错误 :

  1. Cloning into 'build/gyp'...
  2. fatal: unable to access 'https://chromium.googlesource.com/external/gyp/': Failed to connect to chromium.googlesource.com port 443: Operation timed out

针对这一问题,可以去源代码仓库下载文件(需fq),选择master分支,下载.tgz为后缀的文件。

然后进入libuv/build目录,创建gyp目录,将之前下载的 gyp-refs_heads_master.tar.gz 移到build/gyp目录下,并解压该文件压缩包。

  1. cd build
  2. mkdir gyp
  3. cd gyp
  4. tar -zxvf gyp-refs_heads_master.tar.gz

创建Xcode工程文件uv.xcodeproj

  1. ./gyp_uv.py -f xcode
  2. ['-f', 'xcode', '-I', 'common.gypi', 'test/test.gyp', '--depth=.', '-Goutput_dir=/Users/bgl/OpenSource/libuv/out', '--generator-output', '/Users/bgl/OpenSource/libuv/out', '-Dhost_arch=x64', '-Dtarget_arch=x64', '-Duv_library=static_library']

使用xcodebuild进行libuv的编译。

  1. xcodebuild -ARCHS="x86_64" -project out/uv.xcodeproj -configuration Release -alltargets

注意:

在编译的时候,可能会遇到如下错误:

  1. xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

造成这一问题的主要原因是在Mac应用商城安装完Xcode后,还需在终端环境下配置下。配置命令如下:

  1. sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
  2. Password:

再次使用xcodebuild进行libuv编译,即可编译成功。

二、运行测试用例

1. 本地编译

  1. ./gyp_uv.py -f make
  2. ['-f', 'make', '-I', 'common.gypi', 'test/test.gyp', '--depth=.', '-Goutput_dir=/Users/bgl/OpenSource/libuv/out', '--generator-output', '/Users/bgl/OpenSource/libuv/out', '-Dhost_arch=x64', '-Dtarget_arch=x64', '-Duv_library=static_library']
  3. make -C out

2. 运行测试用例

  1. ./out/Debug/run-tests
  2. 1..374
  3. ok 1 - platform_output
  4. ...
  5. ok 373 - we_get_signals
  6. ok 374 - we_get_signals_mixed

参考链接: