Building OpenSSL for Visual Studio

來源:互聯網
上載者:User

標籤:visualstudio   openssl   windows   perl   

博主親測有效。

轉載請註明出處:http://blog.csdn.net/xiaoy_h/article/details/36444013

原英文文章:http://developer.covenanteyes.com/building-openssl-for-visual-studio/

譯文:

在Windows上產生支援VS的OpenSSL是相當簡單,但簡單地事情卻又蜿蜒曲折,我將會在此寫下這曲折經曆,將來的實驗當中才能減少傷痛。

(來外說話真有情調啊)


你需要做什嗎?

你需要安裝:

VS2010(這個將會最大可能地與老版本相容)

ActivePerl【1】

最新版的 OpenSSL source-code【2】


組建組態

解壓【3】OpenSSL源碼到兩個檔案夾,一個用於32位產生,一個用於64位【4】。比如,可以解壓到C:\openssl-src-32 和 C:\openssl-src-64 目錄下。


產生32位靜態庫

1、開啟Visual Studio 命令提示字元 (2010)【5】

2、CD命令進入32位源碼目錄(比如:cd C:\openssl-src-32).

3、執行如下命令:【6】

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32ms\do_msnmake -f ms\nt.mak nmake -f ms\nt.mak install
最終將產生在C:\Build-OpenSSL-VC-32.目錄


產生32位調試版本靜態庫

這些步驟將會直接嵌入調試標識到lib檔案中。不要期望看到任何pdb檔案。

1、同上開啟命令提示字元

2、同上cd進源碼目錄(還是 C:\openssl-src-32)

3、執行如下命令:

perl Configure debug-VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32-dbgms\do_ms
4、在類似notepad的文字編輯器中開啟ms\nt.mak檔案並將其中所有的/Zi替換成/Z7。將會有三個被替換。【7】

5、執行如下命令:

nmake -f ms\nt.maknmake -f ms\nt.mak install
最終產生在目錄C:\Build-OpenSSL-VC-32-dbg。並將某些檔案改成如下名字:libeay32-debug.lib 和ssleay32-debug.lib


產生64位靜態庫

1、開啟VisualStudio x64 命令提示字元(在開始菜單中找)

2、cd進OpenSSL的64位源碼檔案夾 (e.g. cd C:\openssl-src-64)

3、執行命令:

perl Configure VC-WIN64A --prefix=C:\Build-OpenSSL-VC-64ms\do_win64anmake -f ms\nt.maknmake -f ms\nt.mak install
這將輸出在C:\Build-OpenSSL-VC-64目錄

注意:這次輸出的名字還是叫libeay32.lib 和 ssleay32.lib。你必須自行將名字改成對應的名字(避免混淆)。


產生帶調試符的64位靜態庫

這些步驟將會直接嵌入調試標識到lib檔案中。不要期望看到任何pdb檔案。
1、開啟VisualStudio x64 命令提示字元

2、cd進OpenSSL的64位源碼檔案夾 (e.g. cd C:\openssl-src-64)

3、執行命令:

perl Configure debug-VC-WIN64A --prefix=C:\Build-OpenSSL-VC-64-dbgms\do_win64a
4、在文字編輯器中同上編輯那個檔案,除了以ASM開頭的那一行,共有兩次替換。【8】

5、執行命令:

nmake -f ms\nt.maknmake -f ms\nt.mak install
這將輸出在這個目錄下:C:\Build-OpenSSL-VC-64-dbg。同事名字也要改成這樣的:libeay64-debug.lib 和ssleay64-debug.lib.

不要做什嗎?

我在sun下嘗試了每一種可以連結到VS工程的方法來擷取OpenSSL的windows產生。在這條路上我學到了很多。這些就是我知道的不要去做的事情:

-不要盲目遵循OpenSSL源碼目錄下給出的WIN32/64安裝指令。到網上找指南。

-不要在Cygwin中產生OpenSSL。這雖然簡單,但是最終不能成功連結到VS。

-不要在MSYS和MinGW中建立OpenSSL。這很困難,而且也不能成功連結到VS。

-不要使用Windows安裝指令做提到的NASM,這對VS的Build來說沒有必要。(無論怎麼說它只支援32位的。)

-Strawberry Perl在這些奇葩的配置中並不總是有效。ActivePerl似乎更穩定。

-不要在相同的目錄裡建立32位和64位OpenSSL。第一個產生操作將會在目錄中留下些"遺物",這些將會攪亂第二個產生操作。(很明顯的是,執行一個clean是遠遠不夠的。)

-不要嘗試在VS 64位命令提示字元裡建立32位OpenSSL,反之亦然。這將不會有任何效果。


引用

以下將是非常有用的網址:

https://github.com/freelan-developers/freelan-buildtools/blob/master/INSTALL.md


腳註:

【1】、不要使用Strawberry Perl(可以看post來的評論)。

【2】、OpenSSL version 1.0.1c是寫這篇文章時的最新版本。

【3】、7-zip可以很好地在Windows解壓縮.tar.gz檔案。這是一個兩步處理過程。

【4】、OpenSSL的產生指令碼對於在一個隊列中處理兩個平台下的build不夠智能。不同平台的產生必須從頭開始。

【5】、你可以在開始菜單的某個地方找他它。

【6】、使用ms\\ntdll.mak反而會產生共用庫。

【7】、/Zi選項雖然有用,但是不指定更多的選項將很難找到正確的.pdb檔案。簡單地說,/Z7選項僅僅是將所有的調試標識嵌入到lib檔案。到這裡看更多細節。

【8】、為了產生64位版本,VS使用MASM(ml64.exe)來編譯器集代碼。根據MASM’s documentation,/Z7選項是不被支援的。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.