當只有源文件hello.c 的時候,沒有工程,沒法用IDE(集成開發環境),前提是電腦要裝一個IDE,有cl.exehtml
使用時要配好環境變量,cmd要定位文件目錄下,用cl /c hello.c 只編譯,不連接 生成hello.obj文件c++
而後用link hello.obj 命令,生成hello.exe文件。 cl hello.cgit
首先寫一個無缺的C語言程序,能夠運行的通,天然是簡單就好,下面給出一個簡單的示例供參考:windows
#include<stdio.h>瀏覽器
int main(void)
{
char *string = "Hello World!";
printf("%s\n",string);
return 0;
}框架
使用lc命令進行編譯,可是卻給出下面的提示(cl.exe是vc++6.0中的一個命令,因此要用的話,須要先安裝vc++6.0):異步
其實上面之因此會出現這樣的現象是覺得,cl.exe命令雖然存在,可是你尚未配置環境變量,因此並非在什麼地方均可以用,因此會在剛纔給出那樣的提 示,因而咱們須要去配置環境變量(計算機(個人電腦)->屬性->高級系統配置->高級->環境變量->系統變量 ->path),在path中最後加入「C:\Program Files\Microsoft Visual Studio\VC98\Bin」(vc++6.0的bin目錄),而後從新運行,會給出「沒法啓動此程序,由於計算機中丟失mspdb60.dll。嘗 試從新安裝該程序以解決此問題。」也就說少了一個動態連接庫文件,這時你只要將它須要的這個.dll文件拷貝到剛纔那個bin目錄下就能夠了。(mspdb60.dll下載地址)async
上面的工做都作完了之後,就開始正式編譯運行這個程序,仍是使用上面給出的cl demo.c,卻給出以下的提示,貌似是真的仍是不行哦~~~當時就小小的鬱悶了一把,可是一看錯誤,原來提示是沒有給出頭文件<stdio.h>的路徑,就是說它找不到頭文件,因而到網上搜索了一下,結果發現原來是能夠解決的。函數
因而嘗試了下面的一種方式,就是另外寫一個.bat文件用來專門寫dos命令行,從而能夠順利的加入頭文件和lib文件,其中的代碼以下:優化
set INCLUDE=C:\Program Files\Microsoft Visual Studio\VC98\Include
//設置頭文件路徑,從而能夠找到頭文件
set LIB=C:\Program Files\Microsoft Visual Studio\VC98\Lib
//設置lib文件路徑,從而能夠找到lib文件
cl D:\demo1.c
//編譯D:\demo1.c源文件
cmd /k echo
//這條命令行,是我找了很久才找到,就是要停留在運行完的程序的地方,這樣咱們才能夠繼續操做或是在不徹底正確的時候能夠查看一下錯誤在什麼地方,經過這條命令就能夠中止在編譯鏈接過的dos窗口的地方。
編譯連接都完成了,而後能夠經過輸入命令*.exe方法直接能夠運行查看結果,到此整個編譯連接和運行過程就完成了,還有更多不太瞭解的地方,你們能夠查看csdn上的不少的東東。
本人也是現學現賣,之前學的時候沒有注意到這些,如今有一個朋友問起才學了一下,但願能夠幫到你們。
cl命令:
-優化-
|
||
/O1 | 最小化空間 | minimize space |
/Op[-] | 改善浮點數一致性 | improve floating-pt consistency |
/O2 | 最大化速度 | maximize speed |
/Os | 優選代碼空間 | favor code space |
/Oa | 假設沒有別名 | assume no aliasing |
/Ot | 優選代碼速度 | favor code speed |
/Ob | 內聯展開(默認 n=0) | inline expansion (default n=0) |
/Ow | 假設交叉函數別名 | assume cross-function aliasing |
/Od | 禁用優化(默認值) | disable optimizations (default) |
/Ox | 最大化選項。(/Ogityb2 /Gs) | maximum opts. (/Ogityb1 /Gs) |
/Og | 啓用全局優化 | enable global optimization |
/Oy[-] | 啓用框架指針省略 | enable frame pointer omission |
/Oi | 啓用內建函數 | enable intrinsic functions |
-代碼生成-
|
||
/G3 | 爲 80386 進行優化 | optimize for 80386 |
/G4 | 爲 80486 進行優化 | optimize for 80486 |
/GR[-] | 啓用 C++ RTTI | enable C++ RTTI |
/G5 | 爲 Pentium 進行優化 | optimize for Pentium |
/G6 | 爲 Pentium Pro 進行優化 | optimize for Pentium Pro |
/GX[-] | 啓用 C++ 異常處理(與 /EHsc 相同) | enable C++ EH (same as /EHsc) |
/EHs | 啓用同步 C++ 異常處理 | enable synchronous C++ EH |
/GD | 爲 Windows DLL 進行優化 | optimize for Windows DLL |
/GB | 爲混合模型進行優化(默認) | optimize for blended model (default) |
/EHa | 啓用異步 C++ 異常處理 | enable asynchronous C++ EH |
/Gd | __cdecl 調用約定 | __cdecl calling convention |
/EHc | extern「C」默認爲 nothrow | extern "C" defaults to nothrow |
/Gr | __fastcall 調用約定 | __fastcall calling convention |
/Gi[-] | 啓用增量編譯 | enable incremental compilation |
/Gz | __stdcall 調用約定 | __stdcall calling convention |
/Gm[-] | 啓用最小從新生成 | enable minimal rebuild |
/GA | 爲 Windows 應用程序進行優化 | optimize for Windows Application |
/Gf | 啓用字符串池 | enable string pooling |
/QIfdiv[-] | 啓用 Pentium FDIV 修復 | enable Pentium FDIV fix |
/GF | 啓用只讀字符串池 | enable read-only string pooling |
/QI0f[-] | 啓用 Pentium 0x0f 修復 | enable Pentium 0x0f fix |
/Gy | 分隔連接器函數 | separate functions for linker |
/GZ | 啓用運行時調試檢查 | enable runtime debug checks |
/Gh | 啓用鉤子函數調用 | enable hook function call |
/Ge | 對全部函數強制堆棧檢查 | force stack checking for all funcs |
/Gs[num] | 禁用堆棧檢查調用 | disable stack checking calls |
-輸出文件-
|
||
/Fa[file] | 命名程序集列表文件 | name assembly listing file |
/Fo | 命名對象文件 | name object file |
/FA[sc] | 配置程序集列表 | configure assembly listing |
/Fp | 命名預編譯頭文件 | name precompiled header file |
/Fd[file] | 命名 .PDB 文件 | name .PDB file |
/Fr[file] | 命名源瀏覽器文件 | name source browser file |
/Fe | 命名可執行文件 | name executable file |
/FR[file] | 命名擴展 .SBR 文件 | name extended .SBR file |
/Fm[file] | 命名映射文件 | name map file |
-預處理器-
|
||
/FI | 命名強制包含文件 | name forced include file |
/C | 不吸收註釋 | don't strip comments |
/U | 移除預約義宏 | remove predefined macro |
/D{=|#} | 定義宏 | define macro |
/u | 移除全部預約義宏 | remove all predefined macros |
/E | 將預處理定向到標準輸出 | preprocess to stdout |
/I
|
添加到包含文件的搜索路徑 | add to include search path |
/EP | 將預處理定向到標準輸出,不要帶行號 | preprocess to stdout, no #line |
/X | 忽略「標準位置」 | ignore "standard places" |
/P | 預處理到文件 | preprocess to file |
-語言-
|
||
/Zi | 啓用調試信息 | enable debugging information |
/Zl | 忽略 .OBJ 中的默認庫名 | omit default library name in .OBJ |
/ZI | 啓用調試信息的「編輯並繼續」功能 | enable Edit and Continue debug info |
/Zg | 生成函數原型 | generate function prototypes |
/Z7 | 啓用舊式調試信息 | enable old-style debug info |
/Zs | 只進行語法檢查 | syntax check only |
/Zd | 僅要行號調試信息 | line number debugging info only |
/vd{0|1} | 禁用/啓用 vtordisp | disable/enable vtordisp |
/Zp[n] | 在 n 字節邊界上包裝結構 | pack structs on n-byte boundary |
/vm | 指向成員的指針類型 | type of pointers to members |
/Za | 禁用擴展(暗指 /Op) | disable extensions (implies /Op) |
/noBool | 禁用「bool」關鍵字 | disable "bool" keyword |
/Ze | 啓用擴展(默認) | enable extensions (default) |
- 雜項 -
|
||
/?, /help | 打印此幫助消息 | print this help message |
/c | 只編譯,不連接 | compile only, no link |
/W | 設置警告等級(默認 n=1) | set warning level (default n=1) |
/H | 最大化外部名稱長度 | max external name length |
/J | 默認 char 類型是 unsigned | default char type is unsigned |
/nologo | 取消顯示版權消息 | suppress copyright message |
/WX | 將警告視爲錯誤 | treat warnings as errors |
/Tc | 將文件編譯爲 .c | compile file as .c |
/Yc[file] | 建立 .PCH 文件 | create .PCH file |
/Tp | 將文件編譯爲 .cpp | compile file as .cpp |
/Yd | 將調試信息放在每一個 .OBJ 中 | put debug info in every .OBJ |
/TC | 將全部文件編譯爲 .c | compile all files as .c |
/TP | 將全部文件編譯爲 .cpp | compile all files as .cpp |
/Yu[file] | 使用 .PCH 文件 | use .PCH file |
/V | 設置版本字符串 | set version string |
/YX[file] | 自動的 .PCH 文件 | automatic .PCH |
/w | 禁用全部警告 | disable all warnings |
/Zm | 最大內存分配(默認爲 %) | max memory alloc (% of default) |
-連接-
|
||
/MD | 與 MSVCRT.LIB 連接 | link with MSVCRT.LIB |
/MDd | 與 MSVCRTD.LIB 調試庫連接 | link with MSVCRTD.LIB debug lib |
/ML | 與 LIBC.LIB 連接 | link with LIBC.LIB |
/MLd | 與 LIBCD.LIB 調試庫連接 | link with LIBCD.LIB debug lib |
/MT | 與 LIBCMT.LIB 連接 | link with LIBCMT.LIB |
/MTd | 與 LIBCMTD.LIB 調試庫連接 | link with LIBCMTD.LIB debug lib |
/LD | 建立 .DLL | Create .DLL |
/F | 設置堆棧大小 | set stack size |
/LDd | 建立 .DLL 調試庫 | Create .DLL debug libary |
/link | [連接器選項和庫] | [linker options and libraries] |