CentOS下交叉编译Windows N2N服务端及客户端
记录一下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
什么服务器?
博主,我在搬瓦工上,完全按照你的方法编辑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
@lucktu 嗯,看错误日志大致意思是x86_64-w64-mingw32-gcc编译器没有找到,应该是安装过程中出了什么问题。这个得具体看,没法远程分析。
我都没怎么关注,官方居然出了新的,我这就去研究研究。
第一条命令可以用这个“yum install cmake openssl openssl-devel gcc-c++ git -y”
@欧阳 感谢感谢,因为本来有git和gcc,所以根本没注意到。
@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每个人必须一样吗?还是不能一样
@冰皇 每个人的ip地址需要不一样,一样就冲突了
@Bug侠 怎么写才能让他随机分配
@冰皇 客户端随机分配,易语言取随机数()
@Bug侠 emmmm最高255的IP地址,怎么设置?话说必须在同一网段才能联机么,192.168.100.x,x取随机数的话要怎么写。。。。,我已经把你的源码拆到我的源码上了,写个重启,然后分配吗?可是这个随机数不会写,因为X在尾部
@冰皇 同段才可以互通。取随机数(1,255)
@Bug侠 能不能上线帮我一下,我就缺这个了
@冰皇 我上线了
@Bug侠 找到问题了,是你的隐藏窗口代码问题
@冰皇 找到就好
@Bug侠 可是把你代码删了,edge.exe就不会出现在进程里面了,上线看看
@Bug侠 写得我的魂都快飞了,终于搞定了
@Bug侠 还有件事,想请你帮忙,我留言给QQ了
执行cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/CMakeToolchainFileMingw32.cmake –build ./ ../怎么出现错误?
@冰皇 报什么错?
@Bug侠 留下你的邮箱地址,我截图给你看
@Bug侠 已经发送到系统邮箱了,麻烦了
@Bug侠 错误(10002): 指定子程序或类方法名称“创建图标”未找到。
@Bug侠 请问每个人的虚拟地址必须一样吗?