您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 使用Visual-Studio-2010编译OpenVPN
一、前期准备理论上来讲,要在vs2010上编译OpenVPN,只要用vs新建一个空工程,然后把OpenVPN的源码拖进去编译一下就行了。事实上也是这样的,只不过OpenVPN依赖的东西太多了,比如openssl,lzo等。所以这里首先将它需要的东西准备好。1.需要软件包(假定已经安装好了vs2010)ActivePerl_5.16.2.3010812913.msi(编译openssl需要)lzo-2.03.tar.gz(编译OpenVPN需要,打包用的)openssl-0.9.8g.tar.gz(编译OpenVPN需要,加解密用的)pkcs11-helper-1.07.tar.bz2(编译OpenVPN需要,用于证书,数字签名之类的)openvpn-2.0.9.tar.gz(OpenVPN源码包)2.编译openssl1)安装ActivePerl_5.16.2.3010812913.msi2)解压openssl-0.9.8g.tar.gz到C盘3)启动vs2010的命令行模式(不要直接cmd)开始菜单-MicrosoftVisualStudio2010-VisualStudioTools-VisualStudio命令提示(2010)4)进入openssl目录D:\ProgramFiles\MicrosoftVisualStudio10.0\VCc:C:\cdC:\openssl-0.9.8g5)使用命令ms\do_masm.batC:\openssl-0.9.8gms\do_masm.bat6)使用命令nmake-fms\ntdll.mak生成静态库和动态库C:\openssl-0.9.8gnmake-fms\ntdll.mak当这个命令执行完成后,会在C:/openssl-0.9.8g目录下生成:out32dll,tmp32dll,inc32三个目录。out32dll:是存储的是生成的动态,静态库,后面生成OpenVPN时候需要这些库支持(libeay32.dlllibeay32.libssleay32.dllssleay32.lib)tmp32dll:是存储的是编译过程中生成的目标文件inc32:是头文件哈,在开发的时候需要包含的openssl的头文件所在的目录7)测试库是否正确,执行命令:C:/openssl-0.9.8gnmake-fms\ntdll.maktest当看到passedalltests出现时,就说明我们生成的库是正确的。3.编译lzo1)解压lzo-2.03.tar.gz到C盘2)进入该目录D:\ProgramFiles\MicrosoftVisualStudio10.0\VCc:C:\cdC:\lzo-2.033)使用命令b\win32\vc.batC:\lzo-2.03b\win32\vc.bat命令成功执行后会在C:/lzo-2.03目录下生成lzo2.lib库4.编译pkcs11-helper1)解压pkcs11-helper-1.07到C盘2)进入该目录的lib文件夹D:\ProgramFiles\MicrosoftVisualStudio10.0\VCc:C:\cdC:\pkcs11-helper-1.07\lib3)使用命令nmake-fMakefile.w32-vcOPENSSL=1OPENSSL_HOME=c:\openssl-0.9.8gC:\pkcs11-helper-1.07\libnmake-fMakefile.w32-vcOPENSSL=1OPENSSL_HOME=c:/openssl-0.9.8g若成功,会在C:\pkcs11-helper-1.07/lib下生成了libpkcs11-helper-1.dll和pkcs11-helper.lib4)可能遇到问题,需要作如下操作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文件将!ifdefOPENSSLOPENSSL_STATIC=libeay32.lib#OPENSSL_STATIC=libeay32sd.libOPENSSL_DYNAMIC=libeay32.lib#OPENSSL_DYNAMIC=libeay32d.lib改为!ifdefOPENSSLOPENSSL_STATIC=C://openssl-0.9.8g//out32dll//libeay32.lib#OPENSSL_STATIC=libeay32sd.libOPENSSL_DYNAMIC=C://openssl-0.9.8g//out32dll//libeay32.lib#OPENSSL_DYNAMIC=libeay32d.lib二、使用VisualStudio2010编译OpenVPN(这个步骤不同的版本可能会出现不同的问题,请根据出现的提示Google或百度之。)1.新建一个空的win32控制台程序,取名OpenVPN2.把openvpn-2.0.9解压到工程目录,文件夹改名为code3.把code中所有文件添加到工程4.删除config-win32.h文件中的#includewindows.h行5.工程属性-配置属性-常规-项目默认值-字符集改为:使用多元字节符集6.工程属性-配置属性-VC++目录-包含目录添加如下几个C:\pkcs11-helper-1.07\includeC:\lzo-2.03\includeC:\openssl-0.9.8g\inc327.工程属性-配置属性-链接库-附加库目录添加如下几个C:\pkcs11-helper-1.07\libC:\lzo-2.03C:\openssl-0.9.8g\out32dll8.工程属性-配置属性-链接库-输入-附加依赖性添加如下几个pkcs11-helper.liblibeay32.libssleay32.liblzo2.libWininet.libWs2_32.libIphlpapi.libcrypt32.lib9.工程属性-配置属性-链接库-输入-忽略特定默认库添加如下几个libc.liblibcmt.libmsvcrt.liblibcd.liblibcmtd.lib
本文标题:使用Visual-Studio-2010编译OpenVPN
链接地址:https://www.777doc.com/doc-7372962 .html