编译OpenNHP

English


1. WSL环境准备

提示: Windows 10/11下可以通过WSL子系统来运行Linux,详细请见WSL官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install

  • 【开启WSL功能】 在Win10上,需要首先开启WSL才能使用WSL安装Linux,设置界面请见下图。 Win10上WSL设置
  • 【WSL上安装Linux】 推荐在WSL上安装Ubuntu Linux,通过PowerShell运行以下命令安装:

     wsl --update
     wsl --install -d Ubuntu
    

    如果遇到以下问题,参考:https://blog.csdn.net/weixin_44293949/article/details/121863559

     无法从 'https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json’提取列表分发。无法解析服务器的名称或地址
     Error code: Wsl/WININET_E_NAME_NOT_RESOLVED
    
  • 【WSL环境的IP地址】 在WSL的Linux环境中,运行以下命令获取IP地址:
主机查看IP地址的命令
WSL中Linux主机hostname -I \| awk '{print $1}'
WSL宿主Windows主机ip route show \| grep -i default \| awk '{ print $3}'

2. 系统需求

  • 2.1 Go语言环境:Go 1.21 。安装包下载地址: https://go.dev/dl/
    • Windows与macOS环境下,通过下载的安装程序来安装Go。
    • Linux环境下可以直接通过管理工具安装: sudo apt install golang
    • 安装成功后,运行命令go version 来查看Go版本号。
    • Windows与macOS环境下,通过下载的安装程序来安装Go。
    • Linux环境下可以直接通过管理工具安装:sudo apt install golang 或者通过以下命令手动安装:
        1. sudo apt-get update
        2. wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
        3. sudo tar -xvf go1.21.0.linux-amd64.tar.gz
        4. sudo mv go /usr/local
        5. export GOROOT=/usr/local/go
        6. export GOPATH=$HOME/go
        7. export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
        8. source ~/.profile
    
    • 安装成功后,运行命令go version 来查看Go版本号。
  • 2.2 GCC环境:
    • Linux与macOSGCC 8.0或以上。
      • 查看GCC版本的命令:gcc -v
      • 安装GCC: sudo apt install build-essential
    • Windows:
      1. 第一步:安装mingw64。mingw64可以通过msys2的包管理工具进行下载。安装msys2系统要求、下载与安装教程见:https://www.msys2.org/install_msys2

      2. 第二步:安装GCC。在msys2的控制台输入命令:

        pacman -S mingw-w64-ucrt-x86_64-gcc
        
      3. 第三步:配置GCC。将GCC工具路径加入Windows的 %PATH% 环境变量。例如:mingw-w64-gcc的安装路径为C:\Program Files\MSYS2\, 则需要运行命令

        setx PATH "%PATH%;C:\Program Files\MSYS2\ucrt64\bin
        

        执行成功之后,打开新的命令行窗口,检查gcc的版本号

        gcc --version
        
    • 提示: Windows下可以通过WSL子系统来运行Linux,详细请见WSL官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install
      • 推荐在WSL上运行Ubuntu最新版v22,在Windows上的PowerShell运行以下命令安装:
        wsl --install --distribution Ubuntu-22.04
        

注:如果 2.1 和 2.2 已完成,直接在项目目录下执行编译命令 .\build.bat 时,通常会遇到 系统找不到指定的路径或 ` ‘lib’ 不是内部或外部命令,也不是可运行的程序或批处理文件。` 的错误。2.3 提供了解决该问题的方法,供参考使用。

  • 2.3 lib环境:

    • 在编译运行的命令中使用了 lib 工具,这是用于生成 .lib 文件的工具,通常用于链接静态库或导出符号表(在 Windows 中生成 .lib 文件以便与 .dll 文件配合使用)。遇到的错误提示 lib 不是内部或外部命令,表示系统找不到 lib 工具。

    • 解决(’lib’ 不是内部或外部命令,也不是可运行的程序或批处理文件)问题 : 安装 Visual Studio 和 Visual Studio tools。

      • lib 工具是微软的库管理工具,通常随 Visual Studio 的 Microsoft Build Tools 安装。确保你已安装 Visual Studio,并且选择了 C++ 生成工具(C++ Build Tools)组件,其中包括 lib.exe。

      • 如果还没有安装 Visual Studio,可以从 Visual Studio 官方网站下载安装:https://visualstudiomicrosoft.com/zh-hans/ 安装时,选择“桌面开发(C++)”工作负载,它包含 lib.exe 及其他必要的工具。

      • 安装 Visual Studio 后,确保使用 Visual Studio 开发者命令行(Developer Command Prompt) 来运行包含 lib 命令的 build.bat 文件。这个命令行工具会自动加载构建工具的环境变量,如 lib.exe

    • 解决(系统找不到指定路径的错误)问题 : 更改bulid.bat文件中的路径

      • 打开 build.bat 文件,找到
        call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
        
      • 修改为你自己的 visual studio目录下安装路径。比如:
        call "F:\develop\visualstu\VC\Auxiliary\Build\vcvarsall.bat" x64
        

3. 编译

  1. 拉取代码仓库

    git clone https://github.com/OpenNHP/opennhp.git
    
  2. Go环境设置

    go env -w GOPROXY="https://goproxy.cn,direct"
    
  3. 编译构建

    • Linux与macOS:运行代码根目录下脚本 make
    • Windows:运行代码根目录下BAT文件 build.bat
      (注:如果在windows下编译过程中出现错误,请尝试此编译方法:在Visual Studio的developer command prompt for VS命令窗口中,切换到项目目录,执行./build.bat命令)

4. 结果

编译出来的二进制文件都在代码目录下的release子目录下。

  • NHP-Server的可执行文件和配置文件: release\nhp-server 子目录下
  • NHP-AC的可执行文件和配置文件: release\nhp-ac 子目录下
  • NHP-Agent的可执行文件和配置文件: release\nhp-agent 子目录下
  • 所有二进制文件打包成一个tar文件: release\archive 子目录下