Windows下MinGW+Cmake编译n2n v2(2.6)

Linux, 折腾 2020/04/08

这次来编译官方的2.6版本(也就是v2的最新版)

环境准备

环境

Windows下的MinGW+Cmake安装这里就略了,可以参考之前的文章:Windows下使用MinGW+Cmake编译n2n

这次2.6版本加入了AES加密的功能,所以需要OpenSSL:点此跳转

方便起见,直接上下载地址(OpenSSL v1.1.1f)吧,32位64位

一路下一步即可~

代码

https://github.com/ntop/n2n/archive/2.6.zip

开始

比如解压到 C:\n2n-2.6 目录

运行 C:\MinGW\msys\1.0\msys.bat ,执行

cd /c/n2n-2.6/
mkdir build
cd build
cmake -G "MSYS Makefiles" ..

没问题,OpenSSL也找到了,开始编译,执行

make

擦,果然,一堆的warning和error……warning可以暂时忽略,直接看error

比如,edge_utils.c:965:6: error: unknown type name 'u_int8_t'

代码中使用了一个未知的结构名称u_int8_t

打开edge_utils.c,头部指定一下

typedef unsigned char u_int8_t;

保存,重新 make

完成 build目录下已编译好 edge.exe\supernode.exe\n2n-benchmark.exe

测试

因为默认编译启用了AES加密,所以需要用到相关的dll

p.s 我这边不知道为啥,即便cmake时使用DOPENSSL_USE_STATIC_LIBS指定了静态链接,运行exe也还是需要dll,路过的大佬请指教……

复制 OpenSSL 安装目录下的 libcrypto-1_1.dll 到edge.exe 同目录下,并改名为 libcrypto.dll

我这里是C:\Program Files (x86)\OpenSSL-Win32\libcrypto-1_1.dll

build 目录下运行 edge.exe -h

OK了,不过代码里的版本号还是 2.5.1,太着急发布所以没改版本号吗…… :笑哭:

关闭AES

如果不需要AES加密(同时也就不需要libcrypto.dll),可以修改 CMakeLists.txt里,第10行左右

OPTION(N2N_OPTION_AES "USE AES" ON)

修改为

OPTION(N2N_OPTION_AES "USE AES" OFF)

删除build目录下所有文件,重新编译

cmake -G "MSYS Makefiles" ..
make

即可得到不支持AES加密的edge(没有 -A 参数)

本文标签:


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