Windows系統下用命令行編譯C/C++程序過程總結


前一段時間在自學linux系統,想模仿linux命令行的方式在Windows下編譯C/C++程序,摸索一段時間后總算把這個解決了!

(1)先用記事本編寫如下所示的代碼,並另存為hello.cpp,假設其保存路徑為C:\Users\Administrator\Desktop。

#include<iostream>

using namespace std;

int main()

{

    cout<<"hello world!"<<endl;

    return 0;

}

(2)用記事本寫一段簡單的批處理文件,內容如下所示,在保存文件時選擇另存為,文件名假設為batch.bat,bat是批處理文件的后綴,保存類型選擇:所有文件(這個尤其需要注意),假設其保存路徑也是C:\Users\Administrator\Desktop。

set path=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin

set include=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\include

set lib=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\lib

上面批處理文件的第一句話表示設置環境變量,這個也可以通過:計算機/屬性/高級系統設置/環境變量/用戶變量,D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin放到path的值里去,記得與之前已有值之間用";"隔開。這個path文件夾是我們裝載VS2010時自帶的,在設置路徑時要根據自己的安裝路徑進行修改,里面包含微軟在Windows下給我們提供的C/C++編譯器cl.exe程序(編譯器自身也是一個軟件程序,只是它的作用是用來編譯其它的程序),當然還有link.exe鏈接程序,調用cl時,系統會自動調用link程序(后面將看到我們只用了cl命令就可以進行C/C++程序的編譯、鏈接)。后面兩句話分別表示包含C++中自帶的頭文件庫和靜態鏈接庫,靜態理解庫包含了頭文件中函數對應的實現部分,為了不讓人們看到其中的源代碼,它以二進制文件形式編碼,若要查看其內容需要進行反匯編。

(3)通過cmd命令進入DOS操作界面,輸入cd C:\Users\Administrator\Desktop進入cpp文件和bat批處理文件所在的位置,然后鍵入batch.bat進行批處理,這些操作在VS2010集成開發環境中都為我設置好了,所以我們在里面寫C/C++程序時並沒有這樣設置路徑的繁瑣操作,但是通過自己手動的路徑設置,我們會對程序的編譯、鏈接、執行有更加深入的認識。

(4)鍵入cl hello.cpp,我們會看到計算機報出了“無法啟動此程序,因為計算機中丟失mspdb100.dll。嘗試重新安裝該程序以解決此問題”的系統儲物,dll文件是動態鏈接庫文件,其是在cl.exe程序運行時才被加載進來的文件,這個靜態鏈接庫lib文件不同。這說明在D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin路徑里沒有找到mspdb100.dll,原來此文件在文件夾D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\Common7\IDE里,我們可以將此文件拷到bin文件夾里,或將D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\Common7\IDE加到批處理的path環境變量里,或者將其加到cpp文件所在的文件夾里,這只會引起在搜索順序上的不同。

(5)再次鍵入cl hello.cpp,我們看到在C:\Users\Administrator\Desktop文件夾里得到了hello.obj文件,這是編譯后的輸出文件,但是沒有得到可執行exe文件,DOS界面里出現這樣的錯誤“LINK:fatal error LNK1104:cannot open file 'kernel32.lib' “這樣的鏈接錯誤,kernel32.lib是Windows系統文件,通過Windows自帶的搜索工具,我們看到此文件在文件夾C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib里,我們可以將其加到cpp文件所在的文件夾或bin文件里。再次鍵入cl hello.cpp,我們發現這次程序被成功編譯鏈接了,cpp文件所在的文件夾里多了兩個文件:hello.obj和hello.exe。

(6)在DOS界面鍵入hello.exe,程序被執行,輸出了我們預想的hello world!,至此,在Windows下模擬linux命令行操作,編譯C/C++文件全部完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM