怎樣配置vc的環境來編譯驅動

2021-04-06 20:32:45 字數 2165 閱讀 8562

寫下怎麼配置vc的環境吧,不過網上這方面的文章很多了,我就不寫重複的東西了,講符號配置順延。

怎樣配置vc的環境來編譯驅動

最好用vc 7.0來編譯驅動,6.0的編譯器沒有7.0的編譯器好,編譯器用的越新越好,驅動和普通的程式沒有什麼區別

在開始講如何配置環境前,先想想自己要編譯程式,需要讓編譯器知道哪些東西?

1.標頭檔案和庫

路徑,如果是編譯應用程式,這個你就不用管了,預設的路徑已經配置好了

編譯驅動的話,多增加標頭檔案和庫的路徑,這裡用我自己的機器環境,具體的情況,根據你的安裝目錄來更改

include

d:/winddk/2600/inc/ddk/w2k

d:/winddk/2600/inc/w2k

libd:/winddk/2600/lib/w2k

如果要編譯xp下的驅動的話,把w2k更改為wxp

2.編譯選項(cl.exe 後面跟的引數)

debug模式

/nologo 不讓我們的設定(cl.exe 後面跟的引數)輸出到輸出視窗

/gz 採用stdcall呼叫方式,還有_fastcall, _cdecl _pascal呼叫方式

/mld 用的單執行緒除錯版執行庫

/w3 警告級別

/zi 建立.pdb檔案記錄所有除錯資訊

/od 不允許優化

/c  僅僅生成obj,需要link程式來連線

其中還有一些其他選項,可以在設定屬性頁裡面選擇,例如:

/fo"release/" 表示中間生成的obj存放的目錄

/fd"release2k/vc70.pdb" 表示程式名字資料庫檔案

還需要定義一些巨集,巨集才是最重要的,這個用來指導編譯器用哪些windows結構,怎麼來生成適合windows的**。 

winver=0x500; 指定你需要編譯的驅動執行在2k下,0x501是xp,0x502是2k3,具體的看msdn

debug;_debug;dbg;除錯版本,有除錯輸出

unicode; 驅動是unicode,wchar會被定義為2個位元組

_x86_;  生成驅動必須的,如果是應用程式的話,對應 _windows 這個巨集

std_call; 採用 stdcall呼叫方式,不過這個在編譯選項裡面已經指定了

win32_lean_and_mean; 用來減少編譯時間的

nt_up; 你的驅動能執行在多處理器上,定義nt_up=0

release模式

/mld 變成 /ml 用單執行緒執行庫

/od  變成 ? 你自己看著辦吧,編譯驅動盡量不開優化,有以下優化選項

/os:更小的大小

/ot:更快的速度

/og:全域性優化

/gf 增加,合併重複的字串

/oi  使用內部函式替換一些函式的呼叫

內聯函式擴充套件的三種優化,使用內聯函式可以節省函式呼叫的開銷:

什麼都不加,表示不使用內聯

/ob1 僅函式定義前有inline或__inline標記使用內聯

/ob2 除了inline或__inline標記的函式外,編譯器「覺得」應該使用內聯的函式,都使用內聯

/oy    不使用幀指標,以提高函式呼叫速度

還有乙個總的優化選項,四選一

/od  不允許優化

/o1 更小的大小

/o2 更快的速度

/ox  完全優化

是不是都被這些優化搞暈了,link裡面也還有優化,呵呵

debug;_debug;dbg;把這三個巨集去掉

3.連線選項(link.exe 後面跟的引數)

debug模式

/out:"debug/???.sys" ---> /out:"release/???.sys"

還可以增加優化選項

/opt:ref 省略沒有引用的資料

/opt:icf 省略冗餘資料

也可以選擇生成pdb檔案,引數和上面的一樣(/debug "/pdb:debug/???.pdb"),方便自己在release模式下的源**級除錯,this is perfect!!!

ps:其中cl.exe link.exe裡面的引數還有很多,自己可以看著msdn學習

自己以前寫驅動的時候,不知道開了乙個什麼優化,把我寫的乙個函式給優化掉了,結果在其他模組調去呼叫這個函式,結果可想而知了。花了不少時間才發現這個問題。

看完後,請點下左邊的廣告,謝謝!!

配置VC 6 0下驅動程式編譯環境的步驟

作業系統 vmware 6.0 windows xp sp1 sp2 ddk版本 windows ddk 3790.1830 編譯環境 microsoft visual c 6.0 with sp6 2 build configurations去掉debug和release,新增mydriver c...

VC6 DDK編譯環境配置

1.使用vc6ide建立乙個makefile專案 testdrv 2.新增testdrv.h,testdrv.cpp並編寫 內容略 3.設定專案,選擇選單 project settings command line makedrv d winddk 2600 fre rebuild all opti...

VC的DDK編譯環境構建

2 在debug中建立check版的驅動 注 wxp 為windows xp 3 在release中建立free版驅動 4 匯入檔案 5 編譯工程 6 生成結果 生成objchk i386中的usbview.exe 說白了原理與在dos編譯一樣 如下為dos編譯方法 setenv即為setenv.b...