之前的文章里,我们已经了解了 n2n 的用法,那么这次主要讨论的是其二进制文件的编译。n2n 有两个版本,这里使用的是较新的 v2 版。

项目地址

由于项目已停止维护,我就只能 GitHub 上找了一个留存的 fork 版本。meyerd/n2n

依赖库

  • 项目依赖 OpenSSL,官网在这里
  • 编译时需要各种命令行常用的开发工具,在后面的步骤会我会按照平台分别提到。

编译步骤

Windows

  1. 下载并安装 CMake、C / C++ 编译环境(这里用的是 MinGW)。
  2. 下载项目源码并解压。
  3. 运行 CMake,选择项目文件夹和 build 文件夹。 1.PNG 2.PNG 3.PNG
  4. 在 build 里生成二进制文件,VS 是打开工程;MinGW 是运行 mingw32-make。 4.PNG 5.PNG

Linux 和 macOS

  1. 从 GitHub 获取项目并进入项目文件夹:
1
2
$ git clone https://github.com/meyerd/n2n.git
$ cd n2n/n2n-v2
  1. 新建 build 文件夹,用来存放编译出来的文件:
1
2
$ mkdir build
$ cd build
  1. 安装支持库,需要的主要用 C 和 C++ 编译器、CMake、OpenSSL。

    • Linux 平台

    – Debian 系(包括 Ubuntu 等)

1
$ sudo apt-get install gcc g++ cmake openssl-dev
-- Red Hat 系(包括 CentOS 等)
1
$ sudo yum install gcc gcc-c++ cmake openssl-devel
如果需要其他的组件请根据编译时的报错信息自行安装。

* macOS 平台

至少需要 Xcode Command Line Tools。可以直接从 App Store 下载 Xcode,或者在终端里运行 `xcode-select --install`。然后安装 [Homebrew](https://brew.sh),并用其安装 CMake 和 OpenSSL:
1
$ brew install cmake openssl
  1. 进行 CMake 设置,编译并安装:
1
2
$ cmake ..
$ make && make install
如果报错的话,请参照后面的问题诊断。

问题诊断

一般来说,Linux 下按照步骤的话都能一次成功;macOS 下可能会有小问题。

找不到 OpenSSL 的支持库

这是我遇到过的,解决办法就是手动把 OpenSSL 的 include 链接上。

1
$ ln -s /usr/local/Cellar/openssl/1.0.2l/include/openssl /usr/local/include/openssl

man 的安装有权限问题

这是 macOS 的 SIP 策略导致的,不会对实际使用造成影响,就忽略吧。