Windows平台編譯OpenSSL詳解

來源:互聯網
上載者:User
下面這篇文章是轉載自中國openssl專業論壇的DragonKing的文章。在文章之前我先說下在VC下使用openssl的一些問題。首先是提示找不到命令,這時應該在project-->setting-->link中加入你編譯openssl產生的兩個lib檔案(最好將產生的lib與dll都加入VC的lib檔案夾中)。 假如運行時出現無法定位檔案序數問題,應該找到system32下和你得到的兩個dll同名的dll,用新的覆蓋,就可以了。     前幾天,為了給大家提供新版本的openssl,又重新做了一次openssl的編譯工作,並比較了幾種編譯方法,寫這個文章簡單介紹一下,希望對大家有協助。
     我編譯的版本是0.9.6h,編譯器使用VC++6.0,根據它的說明,我進行了如下的命令和操作:
     1.安裝ActivePerl-5.6.1.629-MSWin32-x86-multi-thread.順利通過!
     2.開啟控制台程式,在openssl解壓後的目錄下執行Perl Configure VC-WIN32命令,注意,一定要在這個目錄下執行該命令,否則找不到Configure檔案,當然,你也可以指定完整的Configure檔案路徑。順利通過。
     3.根據openssl的協助說明,在解壓目錄下執行ms/do_masm(和ms_/do_ms)命令,成功通過。
     4.配置VC環境變數,我在相同的控制台程式下轉到VC所在目錄下的vc98/bin目錄,執行vcvars32批處理命令,設定VC的環境變數,然後再轉到openssl解壓包的根目錄下。
     注意:我第一次運行Vcvars32的時候,報錯,錯誤為:Out of environment space,這個錯誤的產生是因為你的MS-DOS環境變數沒有分配足夠的記憶體,這可以通過如下方法解決:
     a.點擊開始, 點擊運行.
     b.輸入sysedit後斷行符號運行該程式.
     c.然後會出現多個視窗,選擇Config.sys視窗.
     d.如果存在Shell= 的語句, 在其前面輸入 REM ,即注釋該語句.
     e.如果該語句不存在,就直接輸入SHELL=C:/COMMAND.COM /E:4096 /P ,注意,要保證該語句是從第一行第一個位置開始輸入的。
     f.儲存、退出重新啟動電腦就應該可以解決這個問題。
     按上述方法解決這個問題之後,重新啟動電腦後可以直接執行第4步。
     5.在openssl解壓目錄下執行nmake -f ms/ntdll.mak,如果沒有錯誤,就完成編譯了。輸出的檔案在out32dll裡面,包括應用程式的可執行檔、兩個Lib檔案和兩個dll檔案。
    
     我根據openssl的說明,做了兩種不通的編譯,一直是加了ASM組合語言編譯器,一直是沒有,即在第三步的時候執行do_masm或do_ms命令,時間上前者大概為3分鐘(我的電腦配置是圖拉丁塞楊1.2,記憶體256SDRM),後者大概是6分鐘的樣子。
     然後,我使用了第三方提供的一個編譯方法,該方法自動設定了openssl各個模組的V虛擬C工程串連設定項目,然後再進行編譯,速度很慢,用了至少20分鐘以上的時間,但是好處是可以將一個一個項目弄的比較清楚,其編譯過程我就不說了,大家可以參看相關的文檔。文章引用自:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.