记录一下N2N Windows下的服务端、客户端的编译过程。。
这里使用的是n2n官方2.8稳定版。
N2N 2.8链接:https://github.com/ntop/n2n/tree/2.8-stable
文章结尾附送 TAP drivers
环境:
Windows 10 build 2004
Visual Studio 2019
OpenSSL 点击转跳
C++make for win (我用的x86的) 下载链接: x86 x64
代码:
https://github.com/ntop/n2n/archive/2.8.zip
开始
首先安装Cmake和Openssl。
安装完毕后解压源码,比如解压到 e:\n2n-2.8 目录
e:
cd n2n-2.8
md build
cd build
cmake ..
没问题,开始编译,执行
MSBuild edge.vcxproj /t:Build /p:Configuration=Release
(第一个遇到的坑,,因为这个我绕了一大圈弯路。。。)
报错
E:\n2n-2.8\include\n2n.h(42,10): fatal error C1083: 无法打开包括文件: “config.h”: No such file or directory [E:\n2n-2.8\build\edge_utils_win32.vcxproj]
已完成生成项目“E:\n2n-2.8\build\edge_utils_win32.vcxproj”(默认目标)的操作 - 失败。
项目“E:\n2n-2.8\build\edge.vcxproj”(1)正在节点 1 上生成“E:\n2n-2.8\build\n2n.vcxproj”(4) (默认目标)。
项目“E:\n2n-2.8\build\n2n.vcxproj”(4)正在节点 1 上生成“E:\n2n-2.8\build\win32\n2n_win32.vcxproj”(5) (默认目标)。
PrepareForBuild:
正在创建目录“n2n_win32.dir\Release\”。
正在创建目录“E:\n2n-2.8\build\win32\Release\”。
正在创建目录“n2n_win32.dir\Release\n2n_win32.tlog\”。
InitializeBuildStatus:
正在创建“n2n_win32.dir\Release\n2n_win32.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
Building Custom Rule E:/n2n-2.8/win32/CMakeLists.txt
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\CL.exe /c /I"C:\Program Files\OpenSSL-Win64\include" /I"E:\n2n-2.8\." /I"E:\n2n-2.8\include" /I"E:\n2n-2.8\win32" /W3 /WX- /diagnostics:column /O2 /Ob2 /D WIN32 /D _WINDOWS /D NDEBUG /D CMAKE_BUILD /D "GIT_R
ELEASE=\"\"" /D "PACKAGE_VERSION=\"2.7.0\"" /D "PACKAGE_OSNAME=\"Windows-10.0.19041\"" /D "N2N_VERSION=\"2.7.0\"" /D "N2N_OSNAME=\"Windows-10.0.19041\"" /D N2N_HAVE_AES /D "CMAKE_INTDIR=\"Release\"" /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"n2n_win32.dir\Release\\" /Fd"n2n_win32.di
r\Release\n2n_win32.pdb" /Gd /TC /errorReport:queue "E:\n2n-2.8\win32\getopt1.c" "E:\n2n-2.8\win32\getopt.c" "E:\n2n-2.8\win32\wintap.c"
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.27.29111 版
getopt1.c
版权所有(C) Microsoft Corporation。保留所有权利。
cl /c /I"C:\Program Files\OpenSSL-Win64\include" /I"E:\n2n-2.8\." /I"E:\n2n-2.8\include" /I"E:\n2n-2.8\win32" /W3 /WX- /diagnostics:column /O2 /Ob2 /D WIN32 /D _WINDOWS /D NDEBUG /D CMAKE_BUILD /D "GIT_RELEASE=\"\"" /D "PACKAGE_VERSION=\"2.7.0\"" /D "PACKAGE_OSNAME=\"Windows-10.0.19041\"" /D "N2N_VERSION=\"2.7.0\
"" /D "N2N_OSNAME=\"Windows-10.0.19041\"" /D N2N_HAVE_AES /D "CMAKE_INTDIR=\"Release\"" /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"n2n_win32.dir\Release\\" /Fd"n2n_win32.dir\Release\n2n_win32.pdb" /Gd /TC /errorReport:queue "E:\n2n-2.8\win32\getopt1.c" "E:\n2n-2.8\win32\getopt.c" "E
:\n2n-2.8\win32\wintap.c"
getopt.c
wintap.c
E:\n2n-2.8\include\n2n.h(42,10): fatal error C1083: 无法打开包括文件: “config.h”: No such file or directory [E:\n2n-2.8\build\win32\n2n_win32.vcxproj]
正在生成代码...
已完成生成项目“E:\n2n-2.8\build\win32\n2n_win32.vcxproj”(默认目标)的操作 - 失败。
已完成生成项目“E:\n2n-2.8\build\n2n.vcxproj”(默认目标)的操作 - 失败。
已完成生成项目“E:\n2n-2.8\build\edge.vcxproj”(Build 个目标)的操作 - 失败。
生成失败。
“E:\n2n-2.8\build\edge.vcxproj”(Build 目标) (1) ->
“E:\n2n-2.8\build\edge_utils_win32.vcxproj”(默认目标) (3) ->
(ClCompile 目标) ->
E:\n2n-2.8\include\n2n.h(42,10): fatal error C1083: 无法打开包括文件: “config.h”: No such file or directory [E:\n2n-2.8\build\edge_utils_win32.vcxproj]
“E:\n2n-2.8\build\edge.vcxproj”(Build 目标) (1) ->
“E:\n2n-2.8\build\n2n.vcxproj”(默认目标) (4) ->
“E:\n2n-2.8\build\win32\n2n_win32.vcxproj”(默认目标) (5) ->
E:\n2n-2.8\include\n2n.h(42,10): fatal error C1083: 无法打开包括文件: “config.h”: No such file or directory [E:\n2n-2.8\build\win32\n2n_win32.vcxproj]
后来去github看issues也发现一个歪果仁也遇到这个问题。最后给出一个解决办法。(确认有效)
--- a/include/n2n.h
+++ b/include/n2n.h
@@ -38,11 +38,7 @@
#ifdef WIN32
#include "win32/n2n_win32.h"
-#ifdef _MSC_VER
-#include "config.h" /* Visual C++ */
-#else
#include "win32/winconfig.h"
-#endif
#define N2N_CAN_NAME_IFACE 1
#undef N2N_HAVE_DAEMON
#undef N2N_HAVE_SETUID
按照上面说的修改下n2n.h重新编译。
继续执行
MSBuild edge.vcxproj /t:Build /p:Configuration=Release
哎, 又出错了。
原因后面也找到了,安装OPENSSL的时候 建议一起安装X86和X64,我当时只安装了X86的结果报错。。。。囧了半天。。。
安装openssl x64后 重新编译。
E:\n2n-2.8\build>MSBuild edge.vcxproj /t:Build /p:Configuration=Release
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.7.0+b89cb5fde
版权所有(C) Microsoft Corporation。保留所有权利。
生成启动时间为 2020/8/26 22:21:51。
项目“E:\n2n-2.8\build\edge.vcxproj”在节点 1 上(Build 个目标)。
项目“E:\n2n-2.8\build\edge.vcxproj”(1)正在节点 1 上生成“E:\n2n-2.8\build\ZERO_CHECK.vcxproj”(2) (默认目标)。
InitializeBuildStatus:
正在创建“x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
所有输出均为最新。
FinalizeBuildStatus:
正在删除文件“x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”。
正在对“x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:\n2n-2.8\build\ZERO_CHECK.vcxproj”(默认目标)的操作。
.....
已完成生成项目“E:\n2n-2.8\build\edge.vcxproj”(Build 个目标)的操作。
已成功生成。
一大堆警告路过。。。。。
157 个警告
0 个错误
已用时间 00:00:06.72
嗯哼 编译过去了 (开心)
继续编译SuperNode
MSBuild supernode.vcxproj /t:Build /p:Configuration=Release
E:\n2n-2.8\build>MSBuild supernode.vcxproj /t:Build /p:Configuration=Release
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.7.0+b89cb5fde
版权所有(C) Microsoft Corporation。保留所有权利。
生成启动时间为 2020/8/26 22:26:03。
项目“E:\n2n-2.8\build\supernode.vcxproj”在节点 1 上(Build 个目标)。
项目“E:\n2n-2.8\build\supernode.vcxproj”(1)正在节点 1 上生成“E:\n2n-2.8\build\ZERO_CHECK.vcxproj”(2) (默认目标)。
InitializeBuildStatus:
正在创建“x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
CustomBuild:
所有输出均为最新。
FinalizeBuildStatus:
正在删除文件“x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”。
正在对“x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate”执行 Touch 任务。
已完成生成项目“E:\n2n-2.8\build\ZERO_CHECK.vcxproj”(默认目标)的操作。
项目“E:\n2n-2.8\build\supernode.vcxproj”(1)正在节点 1 上生成“E:\n2n-2.8\build\edge_utils_win32.vcxproj”(3) (默认目标)。
。。。。。。飘过N行
已完成生成项目“E:\n2n-2.8\build\supernode.vcxproj”(Build 个目标)的操作。
已成功生成。
。。。。。。飘过N行警告
8 个警告
0 个错误
已用时间 00:00:02.46
嗯 编译完成 。
这个呢。。。 只是记录下 突然想玩玩N2N 仅此而已。。。
附:
tap-windows-9.21.2.exe(一键包) http://build.openvpn.net/downloads/releases/tap-windows-9.21.2.exe
tap-windows-9.21.2.zip(手动包) http://build.openvpn.net/downloads/releases/tap-windows-9.21.2.zip
参考文章:
https://github.com/ntop/n2n/blob/dev/doc/Building.md
https://github.com/ntop/n2n/issues/366
2 条评论
按照上面说的修改下n2n.h重新编译。
- -这个到底是什么意思 是添加上面的代码么 我添加了直接变36错误了
求解~~~~按上面的连接说法 自己写了个config.h 也不行
是去掉。。 不是 输入进去。。
也就是 移除
-#ifdef _MSC_VER
-#include "config.h" /* Visual C++ */
-#else
-#endif
保留
#include "win32/winconfig.h"