下面這篇文章是轉載自中國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分鐘以上的時間,但是好處是可以將一個一個項目弄的比較清楚,其編譯過程我就不說了,大家可以參看相關的文檔。文章引用自: