1. 如何在Windows下編譯OpenSSL
筆者按照一定的步驟成功了編譯了OpenSSL庫,步驟如下:
1)在微軟網站下載並安裝VS Studio,筆者寫博客之時的最新版本是2013,連接如下
2)從下載並安裝ActivePerl。
3)從下載並安裝Nasm匯編器。
4)從下載並安裝OpenSSL的最新Release包。筆者寫博客之時,最新的OpenSSL包是:4459777
Feb 11 16:34:23 2013 openssl-1.0.1e.tar.gz (MD5) (SHA1) (PGP sign) [LATEST]
這里需要強調的是,讀者未必需要完全按照筆者的步驟編譯OpenSSL庫,這里的部分次序是可以互換的。
在完成所有上述5步後,我們就可以解壓縮OpenSSL包,在對它進行修改便可以編譯了。在解壓縮後,所有的源代碼放在openssl- 1.0.1e目錄下,在此目錄下,有兩個文件INSTALL.W32, INSTALL.W64需要被關注。打開其中的任何一個文件,你會看到如何編譯OpenSSL的各個步驟。這里,筆者將會再啰嗦一下。
1)打開VS Studio命令行工具,如圖1所示。若編譯64位OpenSSL庫,請打開Visual Studio x64 Win64 Command Prompt,反之亦然。
圖1
2)配置編譯文件及安裝目錄;
編譯Win32:perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
編譯Win64:perl Configure VC-WIN64A
「c:\some\openssl\dir」目錄可以改成任何你希望的安裝目錄
3)搭建編譯環境:
ms\do_nasm
ms\do_ms
對於64位編譯,將ms\do_ms替換成ms\do_win64a
4)編譯OpenSSL
nmake -f ms\ntdll.mak
5)安裝編譯生成的庫到「c:\some\openssl\dir」
nmake -f ms\ntdll.mak install
執行後搞定了嗎?若沒有,是不是遺忘的中間的某個步驟?
2. c語言怎麼用微軟的軟體編譯(過程)
DOS下面是沒有cl的,cl是Windows下命令行方式的編譯工具,IDE也是調用它編譯的。直接cl.exe /help就能看到幫助,貼給你吧 VS2010的(2012的可以交叉編譯ARM架構的目標代碼)
用於 80x86 的 Microsoft (R) 32 位 C/C++ 優化編譯器 16.00.40219.01 版
版權所有(C) Microsoft Corporation。保留所有權利。
C/C++ 編譯器選項
-優化-
/O1 最小化空間 /O2 最大化速度
/Ob<n> 內聯擴展(默認 n=0) /Od 禁用優化(默認)
/Og 啟用全局優化 /Oi[-] 啟用內部函數
/Os 優選代碼空間 /Ot 優選代碼速度
/Ox 最大化優化 /Oy[-] 啟用幀指針省略
-代碼生成-
/GF 啟用只讀字元串池 /Gm[-] 啟用最小重新生成
/Gy[-] 分隔鏈接器函數 /GS[-] 啟用安全檢查
/GR[-] 啟用 C++ RTTI /GX[-] 啟用 C++ EH (與 /EHsc 相同)
/EHs 啟用 C++ EH (沒有 SEH 異常) /EHa 啟用 C++ EH (w/ SEH 異常)
/EHc 外部「C」默認為 nothrow
/fp:<except[-]|fast|precise|strict> 選擇浮點模式:
except[-] - 在生成代碼時考慮浮點異常
fast -「fast」浮點模式;結果可預測性比較低
precise -「precise」浮點模式;結果可預測
strict -「strict」 浮點模式(意味著 /fp:except)
即使使用 /fp:except,/Qfast_transcendentals 也生成內聯內部 FP
/GL[-] 啟用鏈接時代碼生成 /GA 為 Windows 應用程序進行優化
/Ge 對所有函數強制堆棧檢查 /Gs[num] 控制堆棧檢查調用
/Gh 啟用 _penter 函數調用 /GH 啟用 _pexit 函數調用
/GT 生成纖程安全 TLS 訪問 /RTC1 啟用快速檢查(/RTCsu)
/RTCc 轉換為較小的類型檢查 /RTCs 堆棧幀運行時檢查
/RTCu 未初始化的局部用法檢查
/clr[:option] 為公共語言運行時編譯,其中 option 是:
pure - 生成只包含 IL 的輸出文件(沒有本機可執行代碼)
safe - 生成只包含 IL 的可驗證輸出文件
oldSyntax - 接受 Visual C++ 2002/2003 的託管擴展語法
initialAppDomain - 啟用 Visual C++ 2002 的初始 AppDomain 行為
noAssembly - 不產生程序集 /Gd __cdecl 調用約定
/Gr __fastcall 調用約定 /Gz __stdcall 調用約定
/GZ 啟用堆棧檢查(/RTCs) /QIfist[-] 使用 FIST 而不是 ftol()
/hotpatch 確保可熱修補映像的函數填充
/arch:<SSE|SSE2|AVX> CPU 架構的最低要求,以下選項之一:
SSE - 啟用支持 SSE 的 CPU 可用的指令
SSE2 - 啟用支持 SSE2 的 CPU 可用的指令
AVX - 支持使用 Intel(R) 高級矢量擴展指令
/Qimprecise_fwaits 僅在「try」邊界而不是「try」內部生成 FWAITs
/Qsafe_fp_loads 生成安全 FP 負載
-輸出文件-
/Fa[file] 命名程序集列表文件 /FA[scu] 配置程序集列表
/Fd[file] 命名 .PDB 文件 /Fe<file> 命名可執行文件
/Fm[file] 命名映射文件 /Fo<file> 命名對象文件
/Fp<file> 命名預編譯頭文件 /Fr[file] 命名源瀏覽器文件
/FR[file] 命名擴展 .SBR 文件 /Fi[file] 命名預處理的文件
/doc[file] 處理 XML 文檔注釋,並可選擇命名 .xdc 文件
-預處理器-
/AI<dir> 添加到程序集搜索路徑 /FU<file> 強制使用程序集/模塊
/C 不抽出注釋 /D<name>{=|#}<text> 定義宏
/E 預處理到 stdout /EP 預處理到 stdout,無行號
/P 預處理到文件 /Fx 將插入的代碼合並到文件中
/FI<file> 命名強制包含文件 /U<name> 移除預定義的宏
/u 移除所有預定義的宏 /I<dir> 添加到包含搜索路徑
/X 忽略「標准位置」
-語言-
/Zi 啟用調試信息 /Z7 啟用舊式調試信息
/Zp[n] 在 n 位元組邊界上包裝結構 /Za 禁用擴展
/Ze 啟用擴展(默認) /Zl 省略 .OBJ 中的默認庫名
/Zg 生成函數原型 /Zs 只進行語法檢查
/vd{0|1|2} 禁用/啟用 vtordisp /vm<x> 指向成員的指針類型
/Zc:arg1[,arg2] C++ 語言合規性,這里的參數可以是:
forScope[-] - 對范圍規則強制使用標准 C++
wchar_t[-] - wchar_t 是本機類型,不是 typedef
auto[-] - 對 auto 強制使用新的標准 C++ 含義
trigraphs[-] - 啟用三元祖(默認為關閉)
/ZI 啟用「編輯並繼續」調試信息 /openmp 啟用 OpenMP 2.0 語言擴展
- 雜項 -
@<file> 選項響應文件 /?, /help 列印此幫助消息
/bigobj 生成擴展的對象格式 /c 只編譯,不鏈接
/errorReport:option 將內部編譯器錯誤報告給 Microsoft
none - 不發送報告 prompt - 提示立即發送報告
queue - 在下一次管理員登錄時,提示發送報告(默認)
send - 自動發送報告 /FC 診斷中使用完整路徑名
/H<num> 最大外部名稱長度 /J 默認 char 類型是 unsigned
/MP[n] 最多使用「n」個進程進行編譯 /nologo 取消顯示版權信息
/showIncludes 顯示包含文件名 /Tc<source file> 將文件編譯為 .c
/Tp<source file> 將文件編譯為 .cpp /TC 將所有文件編譯為 .c
/TP 將所有文件編譯為 .cpp /V<string> 設置版本字元串
/w 禁用所有警告 /wd<n> 禁用警告 n
/we<n> 將警告 n 視為錯誤 /wo<n> 發出一次警告 n
/w<l><n> 為 n 設置警告等級 1-4 /W<n> 設置警告等級(默認 n=1)
/Wall 啟用所有警告 /WL 啟用單行診斷
/WX 將警告視為錯誤 /Yc[file] 創建 .PCH 文件
/Yd 將調試信息放在每個 .OBJ 中 /Yl[sym] 為調試庫插入 .PCH 引用
/Yu[file] 使用 .PCH 文件 /Y- 禁用所有 PCH 選項
/Zm<n> 最大內存分配(默認為 %) /Wp64 啟用 64 位埠定位警告
-鏈接-
/LD 創建 .DLL /LDd 創建 .DLL 調試庫
/LN 創建 .netmole /F<num> 設置堆棧大小
/link [鏈接器選項和庫] /MD 與 MSVCRT.LIB 鏈接
/MT 與 LIBCMT.LIB 鏈接 /MDd 與 MSVCRTD.LIB 調試庫鏈接
/MTd 與 LIBCMTD.LIB 調試庫鏈接
-代碼分析-
/analyze[:WX-] 啟用代碼分析
WX- - 即使調用了 /WX,也不應將代碼分析警告視為錯誤
3. Microsoft Visual Studio 2010 怎麼編譯,怎麼運行
打開visual studio,然後點擊文件--》新建項目,在彈出的對話框中選擇你要編譯的語言(如fortran),然後新建一個empty project,命名後點擊確定。這樣在visual studio的右側就可以看到你的project。再在source files中添加你的程序。就可以編譯了。運行和編譯都可以在調試的菜單下找到。
4. microsoft visual c++里的編譯在哪裡
在生成菜單下的最後一個子菜單編譯(這個是單獨編譯的)。
在生成菜單下的的 生產解決方案 或者 生產 ,就是編譯加組建。
在VC中編譯程序的過程:
1.打開VC軟體。
2.新建C++程序文件。
3.在新建面板中,選擇「文件」選項卡,選擇「C++ Source File」選項,同時輸入該文件的名稱。
4.寫好程序後,單擊工具欄的「Compile」按鈕,進行編譯。
5.編譯完成,計算機提示我們代碼正確,並創建了工程文件。
6.單擊工具欄的「Build」按鈕,進行連接。
7.計算機提示我們連接成功,並創建了二進制代碼。
8.單擊工具欄的「BuildExecute」按鈕,計算機開始運行代碼。
9.程序運行完畢,計算機輸出了正確的結果。
5. 微軟VS2010如何用來編譯C語言
如何使用Visual Studio 2010(VS2010)編譯C語言
1.打開VS2010主界面,然後選擇,文件→新建→項目,在項目類型中選擇VC++→win32 然後在右側模板中選擇win32控制台應用程序,再在下面輸入一個名稱(項目名稱,不用帶.C)
選擇保存位置後確定,彈出個對話框,不管它,下一步.
2.接下來注意了,這個對話框中,應用程序類型要選擇控制台應用程序,附加選項一定要選中「空項目」。然後點完成。然後對話框消失.
3.回到VS主界面,這時會在左側和右側多了如圖工具欄「解決方案管理器」,在源文件上點右鍵,選擇「添加→新建項」。這里注意,如果你已經有寫好的C源文件,那麼要選擇「現有項」
4.又打開個對話框,不管左邊的,在右邊的模板中選擇C++文件(注一),在下面的名稱中輸入源文件的名字加上.C(注二),保存位置用默認的。然後點擊「添加」
5.好了,編輯頁面出來了,大家可以寫代碼了,這里就寫所有程序員無論學什麼語言都要寫的一個程序「hello world」吧^_^
這里可以看到,VS2010可以智能的標示出函數參數和函數體,方便查看和修改。比VC6.0方便多了。
tips:system(「pause」)(需頭文件windows.h)的目的是讓程序執行到這個位置的時候「暫停」,讓操作者能看到結果。
編好了,然後選擇 調試,或者直接點綠色小箭頭按鈕(注三)就可以查看程序運行結果了,最後,別忘了保存.
好了,介紹完了,相信大家也都掌握了在VS2010下編譯C的方法,這樣裝了VS2010的同學也就不用再費事裝VC6.0了,VS很好很強大,其他的功能大家自己慢慢摸索吧,呵呵,不說啦。
注釋:
注一:現在已經基本沒有純粹的C編譯環境了,都是用兼容C的C++編譯工具來編譯C,所以創建的模板是C++模板。(大家一定還記得VC6.0中大家新建的文件也是C++SourceFile(C++源文件)吧)
注二:加上.C後,編譯系統就會知道這個是C源,從而創建的是C的源文件,編譯的時候就會調用C編譯器。而不加.C,創建的就是C++的源文件。編譯的時候會調用C++的編譯器。雖然C++兼容C,但是在不同的C++編譯環境對C的支持度是不同的,就比如本文中的例子,那句system函數就是C專有的,如果採用C++來編譯就會出錯。所以,在不確定所用的C++編譯器是不是支持某種C語法的時候,還是老老實實的記得加上.C,來告訴編譯系統使用C編譯器而不是C++。
注三:綠色小箭頭的意思是「調試」,快捷鍵F5,使用的時候會吧程序從頭執行到尾,然後自動退出,如果你的程序沒有暫停語句的話,就會出現黑色的程序窗口一閃而過的情況。
如果不想讓程序在調試完畢後自動退出,最簡便的方法就是選擇菜單中的「調試→開始執行」或者按快捷鍵ctrl+F5
6. 如何調用微軟編譯器
你的意思是在命令行使用么?
我講不明白 ,你自己看吧 我網上找的
微軟C/C++編譯器命令行模式用法
微軟C/C++編譯器編譯選項數目眾多,在「命令提示符」窗口鍵入cl /?即可查看完整列表
(見附錄1)。比如說,/GX啟用C++異常處理機制,/GR啟用C++ RTTI,等等。在此不打算
詳細討論這些編譯選項用法。
以下是我的測試目錄f:\vstest中的一個樣例文件:
//1.cpp
#include <iostream>
using namespace std;
void main()
{
cout << "Hello Royal"<<endl;
}
你現在可以進入該目錄執行如下編譯命令:
F:\vstest>cl /GX 1.cpp
運行程序,即會產生如下輸出:
Hello Royal
7. 怎樣用Microsoft visual c++把c源代碼編譯成exe 可執行文件
以VC6舉例:
1、打開電腦上安裝的vc6.0,進入如圖界面