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

Linux, 折腾 2018/04/13

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

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

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

Linux

yum install cmake 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 -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

 



28条评论

  • felice 评论于

    服务器在那里

    • Bug侠 评论于

      @felice :汗: 什么服务器?

  • lucktu 评论于

    博主,我在搬瓦工上,完全按照你的方法编辑windows下的n2n时,进行到cmake时,出现如下错误:
    — The C compiler identification is unknown
    — The CXX compiler identification is unknown
    — Check for working C compiler: x86_64-w64-mingw32-gcc
    CMake Error: your C compiler: “x86_64-w64-mingw32-gcc” was not found.
    … …

    缺少一些东西,所以没有进行完成。

    不知博主可否编辑这里的n2n-v2?这个是官方的,最近刚更新成2.5版本,与这里版本(我们叫他v2s)是不兼容的。
    https://github.com/ntop/n2n

    • Bug侠 评论于

      @lucktu 嗯,看错误日志大致意思是x86_64-w64-mingw32-gcc编译器没有找到,应该是安装过程中出了什么问题。这个得具体看,没法远程分析。
      我都没怎么关注,官方居然出了新的,我这就去研究研究。

  • 欧阳 评论于

    第一条命令可以用这个“yum install cmake openssl openssl-devel gcc-c++ git -y”

    • Bug侠 评论于

      @欧阳 感谢感谢,因为本来有git和gcc,所以根本没注意到。 :咧嘴:

      • 欧阳 评论于

        @Bug侠 我感觉应该+上防火墙添加端口的方法 :二哈: 我就为了防火墙折腾了好久 :笑哭:

        • Bug侠 评论于

          @欧阳 呃……我都是在非生产环境下测试的,所以一上来第一件事就是关闭iptables关闭firewall。也是忽略了这个问题。一会儿就去加上。 :咧嘴:

  • 冰皇 评论于

    无限错误提示!怎么解决?

  • 冰皇 评论于

    edge_v2.exe -a 192.168.100.100 -c bugxia -k 123456 -l 88.88.88.88:3456
    中间这段192.168.100.100每个人必须一样吗?还是不能一样

    • Bug侠 评论于

      @冰皇 每个人的ip地址需要不一样,一样就冲突了

      • 冰皇 评论于

        @Bug侠 怎么写才能让他随机分配

    • Bug侠 评论于

      @冰皇 客户端随机分配,易语言取随机数()

      • 冰皇 评论于

        @Bug侠 emmmm最高255的IP地址,怎么设置?话说必须在同一网段才能联机么,192.168.100.x,x取随机数的话要怎么写。。。。,我已经把你的源码拆到我的源码上了,写个重启,然后分配吗?可是这个随机数不会写,因为X在尾部

    • Bug侠 评论于

      @冰皇 同段才可以互通。取随机数(1,255)

      • 冰皇 评论于

        @Bug侠 能不能上线帮我一下,我就缺这个了 :害羞:

    • Bug侠 评论于

      @冰皇 我上线了

      • 冰皇 评论于

        @Bug侠 找到问题了,是你的隐藏窗口代码问题

        • Bug侠 评论于

          @冰皇 找到就好

          • 冰皇 评论于

            @Bug侠 可是把你代码删了,edge.exe就不会出现在进程里面了,上线看看

          • 冰皇 评论于

            @Bug侠 写得我的魂都快飞了,终于搞定了

          • 冰皇 评论于

            @Bug侠 还有件事,想请你帮忙,我留言给QQ了

  • 冰皇 评论于

    执行cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/CMakeToolchainFileMingw32.cmake –build ./ ../怎么出现错误?

    • Bug侠 评论于

      @冰皇 报什么错?

      • 冰皇 评论于

        @Bug侠 留下你的邮箱地址,我截图给你看

      • 冰皇 评论于

        @Bug侠 已经发送到系统邮箱了,麻烦了

      • 冰皇 评论于

        @Bug侠 错误(10002): 指定子程序或类方法名称“创建图标”未找到。

      • 冰皇 评论于

        @Bug侠 请问每个人的虚拟地址必须一样吗?

    评论(*号为必填项)