2023年12月21日发(作者:)
一、 前期准备
理论上来讲,要在vs2010上编译OpenVPN,只要用vs新建一个空工程,然后把OpenVPN的源码拖进去编译一下就行了。事实上也是这样的,只不过OpenVPN依赖的东西太多了,比如openssl,lzo等。所以这里首先将它需要的东西准备好。
1. 需要软件包
(假定已经安装好了vs2010)
ActivePerl_ (编译openssl需要)
(编译OpenVPN需要,打包用的)
(编译OpenVPN需要,加解密用的)
2 (编译OpenVPN需要,用于证书,数字签名之类的)
(OpenVPN源码包)
2. 编译openssl
1) 安装ActivePerl_
2) 解压到C盘
3) 启动vs2010的命令行模式(不要直接cmd)
开始菜单->Microsoft Visual Studio 2010->Visual Studio Tools->Visual
Studio 命令提示(2010)
4) 进入openssl目录
D:Program FilesMicrosoft Visual Studio 10.0VC>c:
C:>cd C:openssl-0.9.8g
5) 使用命令msdo_
C:openssl-0.9.8g>msdo_
6) 使用命令nmake -f 生成静态库和动态库
C:openssl-0.9.8g>nmake -f
当这个命令执行完成后,会在C:/openssl-0.9.8g目录下生成:out32dll,
tmp32dll, inc32三个目录。
out32dll:是存储的是生成的动态,静态库,后面生成OpenVPN时候需要这些库支持( )
tmp32dll:是存储的是编译过程中生成的目标文件
inc32: 是头文件哈,在开发的时候需要包含的openssl的头文件所在的目录
7) 测试库是否正确,执行命令:
C:/openssl-0.9.8g>nmake -f test
当看到"passed all tests" 出现时,就说明我们生成的库是正确的。
3. 编译lzo
1) 解压到C盘
2) 进入该目录
D:Program FilesMicrosoft Visual Studio 10.0VC>c:
C:>cd C:lzo-2.03
3) 使用命令
C:lzo-2.03>
命令成功执行后会在C:/lzo-2.03目录下生成库
4. 编译pkcs11-helper
1) 解压pkcs11-helper-1.07到C盘
2) 进入该目录的lib文件夹
D:Program FilesMicrosoft Visual Studio 10.0VC>c:
C:>cd C:pkcs11-helper-1.07lib
3) 使用命令nmake -f Makefile.w32-vc OPENSSL=1
OPENSSL_HOME=c:openssl-0.9.8g
C:pkcs11-helper-1.07lib>nmake -f Makefile.w32-vc OPENSSL=1
OPENSSL_HOME=c:/openssl-0.9.8g
若成功,会在C:pkcs11-helper-1.07/lib下生成了和
4) 可能遇到问题,需要作如下操作
A. 打开C:/pkcs11-helper-1.07/lib/pkcs11h-threading.c 文件
第477行
ret = (unsigned)(_data->start (_data->data) - (void*)0);
改为
ret = (unsigned)(_data->start (_data->data));
B. 打开C:/pkcs11-helper-1.07/lib/Makefile.w32-vc 文件
将
!ifdef OPENSSL
OPENSSL_STATIC =
#OPENSSL_STATIC =
OPENSSL_DYNAMIC =
#OPENSSL_DYNAMIC =
改为
!ifdef OPENSSL
OPENSSL_STATIC = C://openssl-0.9.8g//out32dll//
#OPENSSL_STATIC =
OPENSSL_DYNAMIC = C://openssl-0.9.8g//out32dll//
#OPENSSL_DYNAMIC =
二、 使用Visual Studio 2010编译OpenVPN
(这个步骤不同的版本可能会出现不同的问题,请根据出现的提示Google或百度之。)
1. 新建一个空的win32控制台程序,取名OpenVPN
2. 把openvpn-2.0.9解压到工程目录,文件夹改名为code
3. 把code中所有文件添加到工程
4. 删除config-win32.h文件中的#include
5. 工程属性->配置属性->常规->项目默认值->字符集 改为:使用多元字节符集
6. 工程属性->配置属性->VC++ 目录->包含目录 添加如下几个
C:pkcs11-helper-1.07include
C:lzo-2.03include
C:openssl-0.9.8ginc32
7. 工程属性->配置属性->链接库->附加库目录 添加如下几个
C:pkcs11-helper-1.07lib
C:lzo-2.03
C:openssl-0.9.8gout32dll
8. 工程属性->配置属性->链接库->输入->附加依赖性 添加如下几个
Ws2_
9. 工程属性->配置属性->链接库->输入->忽略特定默认库 添加如下几个


发布评论