天天看點

Windows環境下使用VS2010編譯OpenSSL-1.0.1i

準備工作:

1、安裝VC++ 2010。

2、需要perl的支援,下載下傳最新ActivePerl并安裝。

3、下載下傳 Openssl1.0.1i 并解壓。 

====================================================================================================

編譯步驟:

1.使用VS200510下的Visual Studio 2010 Command Prompt進入控制台模式

  開始菜單->所有程式->Microsoft->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 2010 Command Prompt

2.進入openssl源碼的目錄

  指令行鍵入 cd /D D:\openssl-1.0.1i  //把路徑替換成自己的源碼路徑

3.指令行鍵入 perl configure VC-WIN32

4.指令行鍵入 ms\do_ms.bat

另外兩種方式 如果使用也必須保證本機安裝有相應的編譯器才能使用。

:ms\do_masm (預設vc自帶的;也可以自己下載下傳masm并安裝)

:ms\do_nasm (需要下載下傳nasm)

注意:請不要cd進ms目錄再執行do_ms.bat指令,會因為目前目錄不對而報錯。

5.編譯分兩種情況,生成靜态庫和動态庫

  (1) 如果是編譯OpenSSL動态庫,則在指令行鍵入 nmake -f ms\ntdll.mak

    編譯成功課在檔案夾out32dll裡面檢視輸出的檔案,包括應用程式的exe檔案、lib檔案、dll檔案。

  (2) 如果是編譯OpenSSL靜态庫,則在指令行鍵入 nmake -f ms\nt.mak

    編譯成功課在檔案夾out32裡面檢視輸出的檔案,包括應用程式的exe檔案、lib檔案。

注意:此處編譯需要較長時間,請耐心等待,切勿人為中斷。

到此編譯已經完成,将OpenSSL下的include檔案夾、lib檔案、dll檔案考出,使用的時候包含進去就行了。

  另外還有幾個指令可能會用到:

  測試OpenSSL動态庫:nmake -f ms\ntdll.mak test

  測試OpenSSL靜态庫:nmake -f ms\nt.mak test

  安裝OpenSSL動态庫:nmake -f ms\ntdll.mak install

  安裝OpenSSL靜态庫:nmake -f ms\nt.mak install

  清除上次OpenSSL動态庫的編譯,以便重新編譯:nmake -f ms\ntdll.mak clean

  清除上次OpenSSL靜态庫的編譯,以便重新編譯:nmake -f ms\nt.mak clean

====================================================================================================

可能遇到的問題及解決辦法:

1. 啟用Windows控制台(運作cmd)進行編譯,執行第5步nmake -f ms\ntdll.mak或nmake -f ms\nt.mak會報錯:

  'nmake' 不是内部或外部指令,也不是可運作的程式或批處理檔案。

解決辦法:嚴格按第1步操作,啟動Visual Studio 2010 Command Prompt進行編譯,這個會自動配置環境。

2.啟用SDK Command Prompt進行編譯,執行第5步nmake -f ms\ntdll.mak或nmake -f ms\nt.mak會報錯:

  ms\uplink.c(11) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory

  NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio 10\VC\bin\cl.EXE"' : return code '0x2' Stop.

解決辦法:在執行第5步nmake -f ms\ntdll.mak前,進入D:\Program Files\Microsoft Visual Studio 10\VC\bin路徑下(替換成自己的VC安裝路徑),指令行鍵入vcvars32,運作vcvars32.bat。然後再回到OpenSSL源碼的目錄(D:\openssl-1.0.1i),再執行第5步nmake -f ms\ntdll.mak或nmake -f ms\nt.mak

3. 'ml' 不是内部或外部指令,也不是可運作的程式或批處理檔案。

NMAKE : fatal error U1077: 'ml' : return code '0x1' Stop.

解決辦法:把VC下的ml.exe複制到目前目錄即可。但是有些人安裝VC後沒有ml.exe,這個也好解決,下載下傳一個MASM,名字是MASMsetup.exe,不用安裝,按下面來:

1、用winrar解壓安裝檔案MASMsetup.EXE,得到Setup.exe

2、用winrar解壓Setup.exe,得到vc_masm1.cab

3、用winrar解壓vc_masm1.cab,得到一個檔案,檔案名很長,改名為ml.exe就行了。

繼續閱讀