CentOS下交叉编译Windows N2N服务端及客户端

Linux, N2N, 折腾 2018/04/13

记录一下N2N Linux下的服务端、客户端,以及在CentOS下交叉编译Windows版本的N2N。

这里使用的是n2n的一个分支,有v1和v2两个版本,以v2版本为例,编译过程均基于CentOS 7 64bits

其他系统参阅:https://github.com/meyerd/n2n/wiki/Compilation

此文已过于陈旧,不推荐使用此版本N2N

Linux

yum install cmake make openssl openssl-devel gcc-c++ git -y
git clone https://github.com/meyerd/n2n.git
cd n2n/n2n_v2
cmake ./
make && make install

查看版本

Windows

在CentOS 64bits下交叉编译Windows版本稍微有些复杂,关键步骤也就那几步

#安装环境
yum install mingw64-gcc-c++.x86_64 cmake openssl openssl-devel gcc-c++ git make -y
git clone https://github.com/meyerd/n2n.git

git源码到本地之后,需要做一些小调整,否则有各种问题。

还是以v2版本为例,先将v2的源码移动到上级目录,然后返回到n2n目录

cd n2n/n2n_v2
mv * ..
cd ..

修改cmake/CMakeToolchainFileMingw32.cmake文件,将原有的i686-mingw32-gcc两行替换为:

SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)

接着在n2n目录下新建编译文件夹build,开始编译

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/CMakeToolchainFileMingw32.cmake --build ./ ../
make

等待编译完成后,build目录下就有Windows版的客户端(edge.exe)及服务端(supernode.exe)

已编译好的Windows程序:

https://file.bugxia.com/s/b6MAp6LS78b6XBp

压缩包中包含了v1、v2版本的客户端和服务端,还有客户端需要安装的虚拟网卡TapV9

 



46 条评论

  • admlnos 评论于 回复

    使用Cmake的时候出现这个
    CMake Error: CMake was unable to find a build program corresponding to “Unix Makefiles”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
    CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

    • Bug侠 评论于 回复

      @admlnos
      看提示只能看出是编译器没安装
      检查一下,编译所需的环境确定一样别落下
      yum install mingw64-gcc-c++.x86_64 cmake openssl openssl-devel gcc-c++ git -y

      • admlnos 评论于 回复

        @Bug侠
        你在yum这段里再加个make就可以解决了,改一下教程文档吧

      • admlnos 评论于 回复

        @Bug侠
        yum installmingw64- gcc- c++.x86_64 cmake openssl openssl- devel gcc- c++ git make – y这样就不会出问题了

      • admlnos 评论于 回复

        @Bug侠
        我是直接复制你的指令才会出现这个问题

        • Bug侠 评论于 回复

          @admlnos
          得看你那边的情况,比如执行yum是什么结果呢?有没有报什么错呢?

          • admlnos 评论于 回复

            @Bug侠
            没有报错估计是centos8的锅

        • Bug侠 评论于 回复

          @admlnos
          好吧,才看到之前你还有回复~不好意思啊

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)