Ⅰ 如何在 Windows 下编译 OpenSSL
如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器)
1、安装ActivePerl//初始化的时候,需要用到perl解释器
2、使用VS2010下的Visual Studio 2010 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)
3、解压缩openssl的包,进入openssl的目录
4、perl configure VC-WIN32
尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。
5、ms\do_ms.bat
在解压目录下执行ms\do_ms.bat命令
6、nmake -f ms\ntdll.mak
7、nmake -f ms\nt.mak
编译后
在openssl解压目录下执行,完成编译后。输出的文件在out32dll (6), out32 (7)里面,包括应用程序的可执行文件、lib文件和dll文件
注意:在运行第五步时,cl编译器会抱怨说.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码error C2220,于是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。
于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。
继续执行nmake -f ms\ntdll.mak
=================================
一、编译并安装OpenSSL
1、按照标准步骤从源代码编译安装OpenSSL
在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
下载最新版本的Perl然后安装之。
下载最新版本的OpenSSL
然后将源码解压缩到某个目录(如 C:\openssl-0.9.8j)中。
进入openssl源码目录。
cd c:\openssl-1.0.1e
以下为参照该目录下的文件INSTALL.W32的执行过程:
运行configure:
perl Configure VC-WIN32
创建Makefile文件:
ms\do_ms.bat
编译动态库:
nmake -f ms\ntdll.mak
编译静态库:
nmake -f ms\nt.mak
测试动态库:
nmake -f ms\ntdll.mak test
测试静态库:
nmake -f ms\nt.mak test
安装动态库:
nmake -f ms\ntdll.mak install
安装静态库:
nmake -f ms\nt.mak install
清除上次动态库的编译,以便重新编译:
nmake -f ms\ntdll.mak clean
清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean
2、如果嫌麻烦,不想编译,可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版),
可以下载 OpenSSL for Windows,直接安装。
P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下:
在OpenSSL安装目录的下的include/bn.h文件中,将
#define BN_ULLONG unsigned long long
#define BN_ULONG unsigned long long
#define BN_LONG long long
分别修改为:
#define BN_ULLONG ULONGLONG
#define BN_ULONG ULONGLONG
#define BN_LONG LONGLONG
否则,会出现编译错误。
二、使用OpenSSL
在VC中配置使用以上的函数库:
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
在"Show directories for:"的"Include files"选项中新增目录"C:\openssl\include";
"Library files"选择中新增目录"C:\openssl\lib"。
然后在需要链接OpenSSL函数库的工程中加入如下两句:
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")
其作用是将OpenSSL所需的库导入工程中。
三、问题
我在链接OpenSSL的静态函数库时遇到类似以下的问题:
Linking...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj)
...
这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。
调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下:
编辑文件 ms\nt.mak,将该文件第19行
"CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -
D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -
DOPENSSL_NO_DYNAMIC_ENGINE"
中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。
四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明
《在VC中对C/C++ 运行时库不同版本编译指令说明》一文中详细介绍了连接不同版本库的编译指令如下:
C Runtime Library:
/MD MSVCRT.LIB 多线程DLL的Release版本
/MDd MSVCRTD.LIB 多线程DLL的Debug版本
/MT LIBCMT.LIB 多线程静态链接的Release版本
/MTd LIBCMTD.LIB 多线程静态链接的Debug版本
/clr MSVCMRT.LIB 托管代码和非托管代码混合
/clr:pure MSVCURT.LIB 纯托管代码
C++ Standard Library:
/MD MSVCPRT.LIB 多线程DLL的Release版本
/MDd MSVCPRTD.LIB 多线程DLL的Debug版本
/MT LIBCPMT.LIB 多线程静态链接的Release版本
/MTd LIBCPMTD.LIB 多线程静态链接的Debug版本
===============================================
一 配置编译参数
配置编译参数是进行OpenSSL编译的第一步,这一步可以确定系统的环境,使用什么编译器,默认安装路径以及其他一些选项.步骤如下:
1.安装perl:下载ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,然后点击msi文件进行安装!
2..配置编译参数:下载openssl-1.0.1e.tar.gz,解压.
vc:首先在C:\Program Files\Microsoft Visual Studio .NET 2010\VC10\bin\目录下执行vcvars32.bat,然后在解压后的openssl-1.0.1e目录,执行命令配置编译参数:perl Configure VC-WIN32
bc:在解压后的openssl-0.9.8g目录下执行:perl Configure BC-32
二 生成批处理文件
在使用configure脚本配置好的编译参数后,就可以使用批处理命令来生成编译脚本.生成编译脚本根据采用编译器的不同通常使用不同的批处理文件.就目前来说,使用vc编译的时候有三种选择:do_ms,do_masm和do_nasm来创建一系列编译脚本文件,即.mak脚本.步骤如下:
vc:在openssl-1.0.1e目录下,执行命令来批处理文件:do_ms,do_masm和do_nasm
bc:1.下载nsm09839.zip微软汇编编译器,解压,拷贝到c:/windows目录下,修改名称为nasmw.exe;2.在openssl-1.0.1e目录下,执行命令来批处理文件:ms\do_nasm
三 代码编译
vc:
完成上面步骤后,可以看到两个关键脚本文件:nt.mak和ntdll.mak.如果我们需要编译后的OpenSSL库是支持动态DLL形式的,那么应该使用ntddll.mak文件进行编译,这样编译完成我们会得到四个与OpenSSL的API库有关文件:ssleay32.lib,libeay32.lib,ssleay32.dll和libeay32.dll.执行的编译命令形式如下:nmake -f ms\ntdll.mak
如果不希望以动态库的形式使用OpenSSL,那么可以使用nt.mak文件进行编译.这样编译后使用OpenSSL的时候,回直接将代码链接进我们的程序里面.执行命令如下:nmake -f ms\nt.mak
bc:执行命令来完成代码编译:make -f ms\bcb.mak
四 ELSE
1)
测试动态库:
nmake -f ms\ntdll.mak test
测试静态库:
nmake -f ms\nt.mak test
安装动态库:
nmake -f ms\ntdll.mak install
安装静态库:
nmake -f ms\nt.mak install
清除上次动态库的编译,以便重新编译:
nmake -f ms\ntdll.mak clean
清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean
2)
使用OpenSSL
在VC中配置使用以上的函数库:
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
在"Show directories for:"的"Include files"选项中新增目录"C:\openssl\include";"Library files"选择中新增目录"C:\openssl\lib"。
然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。
Ⅱ perl鏄浠涔堬纻
Perl鏄涓绉嶅姛鑳戒赴瀵岀殑璁$畻链虹▼搴忚瑷銆俿trawberry perl鏄疨erl璇瑷镄勭紪璇戝櫒銆
Strawberry Perl鏄鐢ㄤ簬MS Windows镄刾erl鐜澧冿纴鍏朵腑鍖呭惈杩愯屽拰寮鍙憄erl搴旂敤绋嫔簭镓闇镄勪竴鍒囥 瀹冭璁捐′负灏藉彲鑳芥帴杩慤NIX绯荤粺涓婄殑perl鐜澧冦
瀹冨寘𨰾琾erl浜岃繘鍒舵枃浠讹纴缂栬疟鍣锛坓cc锛+鐩稿叧宸ュ叿锛屾墍链夊栭儴搴掳纸锷犲瘑锛屾暟瀛︼纴锲惧舰锛寈ml绛夛级锛屾墍链夋崋缁戠殑鏁版嵁搴揿㈡埛绔浠ュ强瀵笋trawberry Perl镄勬湡链涖
鍦↙inux鍜屽ぇ澶氭暟绫讳技UNIX镄勭郴缁燂纸鍖呮嫭Mac OS X锛変笅锛宲erl涓庣郴缁熶竴璧峰畨瑁呫 Windows链変袱涓鍙鐢ㄧ殑鐗堟湰锛歋trawberry Perl鍜孉ctivePerl銆
缂栬疟鍣ㄥ氨鏄灏嗏滀竴绉嶈瑷锛堥氩父涓洪珮绾ц瑷锛夆濈炕璇戜负钬滃彟涓绉嶈瑷锛堥氩父涓烘灒寮娄绠绾ц瑷锛夆濈殑绋嫔簭銆
涓涓鐜颁唬缂栬疟鍣ㄧ殑涓昏佸伐浣沧祦绋嬶细婧愪唬镰 (source code) 鈫 棰勫勭悊鍣 (preprocessor) 鈫 缂栬疟鍣 (compiler) 鈫 鐩镙囦唬镰 (object code) 鈫 阈炬帴鍣 (Linker) 鈫 鍙镓ц岀▼搴 (executables)
镓╁𪾢璧勬枡锛
Perl鍊熺敤浜咰锛宻ed锛宎wk锛宻hell鑴氭湰璇瑷鍜岃稿氩叾浠栫紪绋嬭瑷镄勫姛鑳姐傚畠链閲嶈佺殑锷熻兘鏄鍏堕泦鎴愮殑姝e垯琛ㄨ揪寮忓姛鑳藉拰搴炲ぇ镄勭涓夋柟浠g爜搴揅PAN銆
绠钥岃█涔嬶纴Perl镀廋涓镙峰己澶э纴骞朵笖镀忚剼链鎻忚堪璇瑷锛埚俛wk鍜宻ed锛変竴镙锋柟渚裤 Perl璇瑷鐖卞ソ钥呭皢鍏剁О涓衡滀竴绉嶆嫢链夊悇绉嶈瑷锷熻兘镄勬ⅵ骞昏剼链璇瑷钬濆拰钬 Unix涓镄勭帇鐗屽伐鍏封濄
缂栬疟鏄浠庢簮浠g爜锛堥氩父鏄楂樼骇璇瑷锛夊埌鐩镙囦唬镰侊纸阃氩呖琛℃棌甯告槸浣庣骇璇瑷鎴栨満鍣ㄨ瑷锛夌殑杞鎹㈣繃绋嬶纴鍙浠ョ敱璁$畻链烘垨铏氭嫙链虹洿鎺ユ墽琛屻
浣嗘槸锛屼篃瀛桦湪浠庝绠绾ц瑷鍒伴珮绾ц瑷镄勭紪璇戝櫒銆傚湪杩欑岖被鍨嬬殑缂栬疟鍣ㄤ腑锛岀敤𨱒ヤ粠鐢遍珮绾ц瑷鐢熸垚镄勪绠绾ц瑷浠g爜閲嶆柊鐢熸垚楂樼骇璇瑷浠g爜镄勫张琚鍙锅氩弽缂栬疟鍣ㄣ备篃链変粠涓绉嶉珮绾ц瑷鐢熸垚楂樼骇璇瑷镄勭紪璇戝櫒锛屾垨鐢熸垚闇瑕佽繘涓姝ュ勭悊镄勪腑闂翠唬镰佺殑缂栬疟鍣锛堜篃绉颁负绾ц仈锛夈傛嫤浜
鍙傝冭祫鏂欐潵婧愶细
锏惧害锏剧-perl
Ⅲ 濡备綍鍦╓indows涓嬬紪璇慜penSSL
濡备綍鍦╓indows涓嬬紪璇慜penSSL 锛圴S2010浣跨敤VC10镄刢l缂栬疟鍣锛
1銆佸畨瑁匒ctivePerl//鍒濆嫔寲镄勬椂鍊,闇瑕佺敤鍒皃erl瑙i喷鍣
2銆佷娇鐢╒S2010涓嬬殑Visual Studio 2010 Command Prompt杩涘叆鎺у埗鍙版ā寮忥纸杩欎釜妯″纺浼氲嚜锷ㄨ剧疆钖勭岖幆澧冨彉閲忥级
3銆佽В铡嬬缉openssl镄勫寘,杩涘叆openssl镄勭洰褰
4銆乸erl configure VC-WIN32
灏介噺鍦ㄨ繖涓鐩褰曚笅镓ц岃ュ懡浠わ纴钖﹀垯镓句笉鍒板仛鑵婃暚Configure鏂囦欢锛屾垨钥呮寚瀹氩畬鏁寸殑Configure鏂囦欢璺寰勚
5銆乵s\do_ms.bat
鍦ㄨВ铡嬬洰褰曚笅镓ц宫s\do_ms.bat锻戒护
6銆佺函鎱峦make -f ms\ntdll.mak
7銆乶make -f ms\nt.mak
缂栬疟钖
鍦╫penssl瑙e帇鐩褰曚笅镓ц岋纴瀹屾垚缂栬疟钖庛傝緭鍑虹殑鏂囦欢鍦╫ut32dll (6), out32 (7)閲岄溃锛屽寘𨰾搴旂敤绋嫔簭镄勫彲镓ц屾枃浠躲乴ib鏂囦欢鍜宒ll鏂囦欢
娉ㄦ剰锛氩湪杩愯岀浜旀ユ椂锛宑l缂栬疟鍣ㄤ细鎶辨ㄨ.\crypto\des\enc_read.c鏂囦欢镄剅ead鏄疶he POSIX name for this item is deprecated锛堜笉琚鎺ㄨ崘镄勶级锛屽缓璁浣跨敤_read銆傚懙锻碉纴鎴戝彲涓嶆兂灏哋penSSL涓镄勬墍链夌殑read鍑芥暟淇鏀逛负_read銆傚啀鐪媍l镄勯敊璇浠g爜error C2220锛屼簬鏄涓奙SDN涓婃煡镓撅细
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
鏄鐢变簬璁剧疆浜/WX阃夐”锛屽皢镓链夌殑璀﹀憡閮戒綔涓洪敊璇瀵瑰緟锛屾墍浠ャ伞伞
浜庢槸镓揿紑OpenSSL鐩褰曚笅镄凪S鐩褰曚笅镄刵tdll.mak鏂囦欢锛屽皢CFLAG镄/WX阃夐”铡绘帀锛屽瓨鐩樸伞伞
缁х画镓ц宯make -f ms\ntdll.mak
=================================
涓銆佺紪璇戝苟瀹夎匫penSSL
1銆佹寜镦ф爣鍑嗘ラや粠婧愪唬镰佺紪璇戝畨瑁匫penSSL
鍦ㄧ紪璇慜penSSL鍓嶏纴闇瑕佹g‘瀹夎匬erl锛屽洜涓哄湪缂栬疟OpenSSL镞堕渶瑕佷娇鐢ㄥ埌璇ョ▼搴忋
涓嬭浇链鏂扮増链镄凯erl铹跺悗瀹夎呬箣銆
涓嬭浇链鏂扮増链镄凮penSSL
铹跺悗灏嗘簮镰佽В铡嬬缉鍒版煇涓鐩褰曪纸濡 C:\openssl-0.9.8j锛変腑銆
杩涘叆openssl婧愮爜鐩褰曘
cd c:\openssl-1.0.1e
浠ヤ笅涓哄弬镦цョ洰褰曚笅镄勬枃浠禝NSTALL.W32镄勬墽琛岃繃绋嬶细
杩愯宑onfigure锛
perl Configure VC-WIN32
鍒涘缓Makefile鏂囦欢锛
ms\do_ms.bat
缂栬疟锷ㄦ佸簱锛
nmake -f ms\ntdll.mak
缂栬疟闱欐佸簱锛
nmake -f ms\nt.mak
娴嬭瘯锷ㄦ佸簱锛
nmake -f ms\ntdll.mak test
娴嬭瘯闱欐佸簱锛
nmake -f ms\nt.mak test
瀹夎呭姩镐佸簱锛
nmake -f ms\ntdll.mak install
瀹夎呴润镐佸眬婵搴掳细
nmake -f ms\nt.mak install
娓呴櫎涓婃″姩镐佸簱镄勭紪璇戯纴浠ヤ究閲嶆柊缂栬疟锛
nmake -f ms\ntdll.mak clean
娓呴櫎涓婃¢润镐佸簱镄勭紪璇戯纴浠ヤ究閲嶆柊缂栬疟锛
nmake -f ms\nt.mak clean
2銆佸傛灉瀚岄夯鐑︼纴涓嶆兂缂栬疟锛屽彲浠ョ洿鎺ョ敤鍒浜哄仛濂界殑windows OpenSSL 瀹夎呭寘锛堟垜鐢ㄧ殑鏄0.9.8j鐗堬级锛
鍙浠ヤ笅杞 OpenSSL for Windows锛岀洿鎺ュ畨瑁呫
P.S. OpenSSL for Windows 镄勬簮浠g爜链変竴浜涙暟鎹绫诲瀷鍜孷C6镄勭紪璇戝櫒涓嶅吋瀹癸纴鎴戝彂鐜扮殑涓嶅吋瀹圭殑鏁版嵁绫诲瀷濡备笅锛
鍦∣penSSL瀹夎呯洰褰旷殑涓嬬殑include/bn.h鏂囦欢涓锛屽皢
#define BN_ULLONG unsigned long long
#define BN_ULONG unsigned long long
#define BN_LONG long long
鍒嗗埆淇鏀逛负锛
#define BN_ULLONG ULONGLONG
#define BN_ULONG ULONGLONG
#define BN_LONG LONGLONG
钖﹀垯锛屼细鍑虹幇缂栬疟阌栾銆
浜屻佷娇鐢∣penSSL
鍦╒C涓閰岖疆浣跨敤浠ヤ笂镄勫嚱鏁板簱锛
镣瑰嚮凿滃崟锛歍ools -> Options锛屽脊鍑哄硅瘽妗"Options"锛屽湪璇ュ硅瘽妗嗕腑阃夋嫨"Directories"镙囩俱
鍦"Show directories for:"镄"Include files"阃夐”涓鏂板炵洰褰"C:\openssl\include"锛
"Library files"阃夋嫨涓鏂板炵洰褰"C:\openssl\lib"銆
铹跺悗鍦ㄩ渶瑕侀摼鎺OpenSSL鍑芥暟搴撶殑宸ョ▼涓锷犲叆濡备笅涓ゅ彞锛
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")
鍏朵綔鐢ㄦ槸灏哋penSSL镓闇镄勫簱瀵煎叆宸ョ▼涓銆
涓夈侀梾棰
鎴戝湪阈炬帴OpenSSL镄勯润镐佸嚱鏁板簱镞堕亣鍒扮被浼间互涓嬬殑闂棰桡细
Linking...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj)
...
杩欐槸鐢变簬OpenSSL镄勯润镐佸嚱鏁板簱浣跨敤镄勬槸浜哣C镄勫氱嚎绋妇LL镄凴elease鐗堟湰锛岃屾垜镄勭▼搴忎娇鐢ㄤ简澶氱嚎绋嬮润镐侀摼鎺ョ殑Release鐗堟湰銆
璋冩暣OpenSSL镄勯润镐佸嚱鏁板簱浣跨敤镄勫簱鍑芥暟鐗堟湰鍗冲彲锛岃皟鏁磋繃绋嫔备笅锛
缂栬緫鏂囦欢 ms\nt.mak锛屽皢璇ユ枃浠剁19琛
"CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -
D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -
DOPENSSL_NO_DYNAMIC_ENGINE"
涓镄"/MD"淇鏀逛负"/MT"銆傜劧钖庨吨鏂扮紪璇戝畨瑁匫penSSL鍗冲彲銆
锲涖侀梼褰曪细鍦╒C涓瀵笴/C++ 杩愯屾椂搴扑笉钖岀増链缂栬疟鎸囦护璇存槑
銆婂湪VC涓瀵笴/C++ 杩愯屾椂搴扑笉钖岀増链缂栬疟鎸囦护璇存槑銆嬩竴鏂囦腑璇︾粏浠嬬粛浜呜繛鎺ヤ笉钖岀増链搴撶殑缂栬疟鎸囦护濡备笅锛
C Runtime Library锛
/MD MSVCRT.LIB 澶氱嚎绋妇LL镄凴elease鐗堟湰
/MDd MSVCRTD.LIB 澶氱嚎绋妇LL镄凞ebug鐗堟湰
/MT LIBCMT.LIB 澶氱嚎绋嬮润镐侀摼鎺ョ殑Release鐗堟湰
/MTd LIBCMTD.LIB 澶氱嚎绋嬮润镐侀摼鎺ョ殑Debug鐗堟湰
/clr MSVCMRT.LIB 镓樼′唬镰佸拰闱炴墭绠′唬镰佹贩钖
/clr:pure MSVCURT.LIB 绾镓樼′唬镰
C++ Standard Library锛
/MD MSVCPRT.LIB 澶氱嚎绋妇LL镄凴elease鐗堟湰
/MDd MSVCPRTD.LIB 澶氱嚎绋妇LL镄凞ebug鐗堟湰
/MT LIBCPMT.LIB 澶氱嚎绋嬮润镐侀摼鎺ョ殑Release鐗堟湰
/MTd LIBCPMTD.LIB 澶氱嚎绋嬮润镐侀摼鎺ョ殑Debug鐗堟湰
===============================================
涓 閰岖疆缂栬疟鍙傛暟
閰岖疆缂栬疟鍙傛暟鏄杩涜孙penSSL缂栬疟镄勭涓姝,杩欎竴姝ュ彲浠ョ‘瀹氱郴缁熺殑鐜澧,浣跨敤浠涔堢紪璇戝櫒,榛樿ゅ畨瑁呰矾寰勪互鍙婂叾浠栦竴浜涢夐”.姝ラゅ备笅:
1.瀹夎卲erl:涓嬭浇ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,铹跺悗镣瑰嚮msi鏂囦欢杩涜屽畨瑁!
2..閰岖疆缂栬疟鍙傛暟:涓嬭浇openssl-1.0.1e.tar.gz,瑙e帇.
vc:棣栧厛鍦–:\Program Files\Microsoft Visual Studio .NET 2010\VC10\bin\鐩褰曚笅镓ц寁cvars32.bat,铹跺悗鍦ㄨВ铡嫔悗镄刼penssl-1.0.1e鐩褰,镓ц屽懡浠ら厤缃缂栬疟鍙傛暟:perl Configure VC-WIN32
bc:鍦ㄨВ铡嫔悗镄刼penssl-0.9.8g鐩褰曚笅镓ц:perl Configure BC-32
浜 鐢熸垚镓瑰勭悊鏂囦欢
鍦ㄤ娇鐢╟onfigure鑴氭湰閰岖疆濂界殑缂栬疟鍙傛暟钖,灏卞彲浠ヤ娇鐢ㄦ壒澶勭悊锻戒护𨱒ョ敓鎴愮紪璇戣剼链.鐢熸垚缂栬疟鑴氭湰镙规嵁閲囩敤缂栬疟鍣ㄧ殑涓嶅悓阃氩父浣跨敤涓嶅悓镄勬壒澶勭悊鏂囦欢.灏辩洰鍓嶆潵璇,浣跨敤vc缂栬疟镄勬椂鍊欐湁涓夌嶉夋嫨:do_ms,do_masm鍜宒o_nasm𨱒ュ垱寤轰竴绯诲垪缂栬疟鑴氭湰鏂囦欢,鍗.mak鑴氭湰.姝ラゅ备笅:
vc:鍦╫penssl-1.0.1e鐩褰曚笅,镓ц屽懡浠ゆ潵镓瑰勭悊鏂囦欢:do_ms,do_masm鍜宒o_nasm
bc:1.涓嬭浇nsm09839.zip寰杞姹囩紪缂栬疟鍣,瑙e帇,𨰾疯礉鍒瘫:/windows鐩褰曚笅,淇鏀瑰悕绉颁负nasmw.exe;2.鍦╫penssl-1.0.1e鐩褰曚笅,镓ц屽懡浠ゆ潵镓瑰勭悊鏂囦欢:ms\do_nasm
涓 浠g爜缂栬疟
vc:
瀹屾垚涓婇溃姝ラゅ悗,鍙浠ョ湅鍒颁袱涓鍏抽敭鑴氭湰鏂囦欢:nt.mak鍜宯tdll.mak.濡傛灉鎴戜滑闇瑕佺紪璇戝悗镄凮penSSL搴撴槸鏀鎸佸姩镐丏LL褰㈠纺镄,闾d箞搴旇ヤ娇鐢╪tddll.mak鏂囦欢杩涜岀紪璇,杩欐牱缂栬疟瀹屾垚鎴戜滑浼氩缑鍒板洓涓涓嶰penSSL镄𪞝PI搴撴湁鍏虫枃浠:ssleay32.lib,libeay32.lib,ssleay32.dll鍜宭ibeay32.dll.镓ц岀殑缂栬疟锻戒护褰㈠纺濡备笅:nmake -f ms\ntdll.mak
濡傛灉涓嶅笇链涗互锷ㄦ佸簱镄勫舰寮忎娇鐢∣penSSL,闾d箞鍙浠ヤ娇鐢╪t.mak鏂囦欢杩涜岀紪璇.杩欐牱缂栬疟钖庝娇鐢∣penSSL镄勬椂鍊,锲炵洿鎺ュ皢浠g爜阈炬帴杩涙垜浠镄勭▼搴忛噷闱.镓ц屽懡浠ゅ备笅:nmake -f ms\nt.mak
bc:镓ц屽懡浠ゆ潵瀹屾垚浠g爜缂栬疟:make -f ms\bcb.mak
锲 ELSE
1)
娴嬭瘯锷ㄦ佸簱锛
nmake -f ms\ntdll.mak test
娴嬭瘯闱欐佸簱锛
nmake -f ms\nt.mak test
瀹夎呭姩镐佸簱锛
nmake -f ms\ntdll.mak install
瀹夎呴润镐佸簱锛
nmake -f ms\nt.mak install
娓呴櫎涓婃″姩镐佸簱镄勭紪璇戯纴浠ヤ究閲嶆柊缂栬疟锛
nmake -f ms\ntdll.mak clean
娓呴櫎涓婃¢润镐佸簱镄勭紪璇戯纴浠ヤ究閲嶆柊缂栬疟锛
nmake -f ms\nt.mak clean
2)
浣跨敤OpenSSL
鍦╒C涓閰岖疆浣跨敤浠ヤ笂镄勫嚱鏁板簱锛
镣瑰嚮凿滃崟锛歍ools -> Options锛屽脊鍑哄硅瘽妗"Options"锛屽湪璇ュ硅瘽妗嗕腑阃夋嫨"Directories"镙囩俱
鍦"Show directories for:"镄"Include files"阃夐”涓鏂板炵洰褰"C:\openssl\include"锛"Library files"阃夋嫨涓鏂板炵洰褰"C:\openssl\lib"銆
铹跺悗鍦ㄩ渶瑕侀摼鎺OpenSSL鍑芥暟搴撶殑宸ョ▼涓缂栬疟镞跺姞鍏"libeay32.lib"灏卞彲浠ヤ简銆
Ⅳ 怎样在windows下安装Perl
下面主要讲两个在cmd中安装perl模块的方法。 PPM方式 优点:方面 缺点:部分模块搜索不到,也就不能安装 具体步骤:1,装好库,这些网站都有编译好了的模块,2,用命令安装,ppm install 模块名称 具体方法如下: 添加库的方法:在cmd中运行命令ppm repo suggest (意思是给出建议添加的网站),然后将列出的网站使用命令 ppm repo add 网站url (比如 ppm repo add http //www bribes org/perl/ppm bribes )添加,全部添加完 这步完成后就用模块安装命令安装. 手动编译方式 优点:通吃所有模块 缺点:有点麻烦 具体步骤:1安装编译器2设置编译器的环境变量3可能安装dmake 具体方法:如下 1.首先要有个c编译器,因为很多模块都是用c编写的。推荐dev-cpp,记得要下含有mingw的就是了(不懂c,下载含有mingw的因为这个版本的bin目录里有gcc.exe等工具). 1.1安装好了编译器之后,要能在cmd中以命令方式运行的话,必须要设置环境变量,将dev-cpp/bin路径加入到环境变量中,否则cmd中无法运行相应的命令,注意加的是绝对路径。弄完好,在cmd中运行gcc -v 显示出内容表示编译器安装成功,并且可以用命令行编译. 2.编译步骤,在cpan上下载需要的模块,比如Win32::SerialPort,一般是gz格式的,用rar解压就行。解压后在cmd中进入这个目录(简单的dos命令应该知道吧),就用常见的方法: perl Makefile.pl make make test make install 2.1需要注意几点 2.1.1具体编译步骤应该先看下模块包内的readme 2.1.2用的是dev-pp编译器,故用make,vc编译器好象是nmake。不过一般会遇到问题,make命令没有用,如果没有nmake(nmake可以下载),我们就可以用dmake,在cmd中输入ppm install dmake,下载并安装dmake,这里要注意你以前activeperl安装的路径里不能有中文,否则显示无法安装,而且ppm安装dmake的目录是在perl/site/bin下的,所以确保这个路径添加在环境变量中,否则dmake无法使用。当安装好dmake后,就可以按照上面那个方法安装perl模块了,只需要将make改成dmake即可: perl Makefile.pl dmake dmake test dmake install 你现在可以打开图形化的ppm界面,搜索看看刚刚那个模块是否安装成功,或者在cmd中输入:perldoc (模块的名称),如果有结果的话,则表示模块安装成功。 因为基本上所以出现的模块在CPAN里都会找到,所以推荐使用第二种方法。
Ⅳ perl在windows下如何运行
1. 先检查你的perl是否在系统的PATH环境变量中:
开始->运行,输入cmd,然后运行 perl -v,如果能显示perl的版本,说明你的perl已经在PATH环境变量中;如果显示“不是内部命令也不是外部命令”,那参照以下流程把perl加入PATH环境变量:
右键单击我的电脑,选择“属性”,点击“高级选项卡”,单击“环境变量”,在“系统变量”下面去找PATH,然后选中它,单击“编辑”,在“变量值”里把perl的安装路径下的bin目录追加到末尾(比如你的perl装在C:\perl,就是C:\perl\bin),然后一路点击确定,就修改好了。再照着上面的方法,验证一下是否添加成功。注意,要在修改完了之后重新打开一个命令行窗口,要不然看不到修改的结果。通常命令行的窗口(cmd那个黑色的窗口)在启动的时候会初始化那些环境变量。
2. 关于perl运行
你看到perl文件(.pl)已经关联到perl解释器上了(就是一个黑色的像帽子样的图标),但是不能直接用双击去执行他,因为如果双击执行,在程序结束之后,perl解释器页退出了,你就看不到结果(就是你说的那个黑色窗口一晃),通常来说,执行perl脚本都是单独打开一个命令行窗口,然后执行:
perl script.pl
来运行,前提是perl加到PATH环境变量里面去了。
如果你的pl文件关联到perl解释器上了,有个偷懒的做法就是直接在命令行下执行:
script.pl
这样Window会自动启动相关联的程序(这里是perl解释器)来打开这个文件,你的perl程序就被执行了!