n2n 的编译

之前的文章里,我们已经了解了 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
  2. 新建 build 文件夹,用来存放编译出来的文件:

    1
    2
    $ mkdir build
    $ cd build
  3. 安装支持库,需要的主要用 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,并用其安装 CMake 和 OpenSSL:

      1
      $ brew install cmake openssl
  4. 进行 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 策略导致的,不会对实际使用造成影响,就忽略吧。