Ⅰ 如何在 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程序就被執行了!