- Post author<?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/2000/svg" NS = "http://www.w3.org/2000/svg" />By Edwin
- Post dateApril 8, 2011
- 8 Commentson Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下編譯 pciutils (lspci, setpci)
pciutils 是 Linux 下查看 PCI/PCIe 設備的利器。可以用來 dump PCI configuration space,可惜在 Windows 平台下類似功能的工具寥寥無幾。在 pcituils 的官網(http://mj.ucw.cz/pciutils.html)說明中提到了可以在 Windows 平台下工作。那下面來介紹 Windows 下編譯 pciutils 的經驗。遺憾的是在 x86_64/amd64 下沒有成功,如果各位有成功的經驗希望留言來描述下,謝謝。
- 下載 pciutils source code。在 ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/ 可以下載到最新的版本。
- 然后需要找到編譯環境,這里推薦使用 mingw 來編譯。mingw 也有許多版本,我是用的是 mplayer 項目的壓縮包。(http://nchc.dl.sourceforge.net/project/mplayer-win32/MinGW/MinGW%20BE%20gcc%204.2.5/MinGW-full-gcc-4.2.5-Dec-2010.7z
) - 再者由於 pciutils 原生是在 Linux 下運用的,在 Windows 下需要提供能夠訪問 kernel space 的接口,pciutils 使用了 WinIO 來實現這個。所以還要去下載 WinIO,地址在這里 http://www.internals.com/utilities/WinIo.zip。
- 好了解壓好三個包后,運行 mingw 下的 msys.bat。看到的命令行就是操作的環境。其中已經包含了所要使用的 gcc 編譯器。需要提的是,由於 pciutils 中的 configure 在 Windows 是沒辦法使用的。所以要使用預先編制好的 config.h 和 config.mk。這兩個文件存放在 pciutils 目錄的 win32目錄中。將他們拷貝到 lib 目錄下。
- 然后修改 lib/i386-io-windows.h 文件,找到 lib = LoadLibrary("WinIo.dll");(3.17版本中在第39行),將 WinIo.dll 替換成 WinIo32.dll(當然 64 位系統應該替換成 WinIo64.dll)。保存下。將 WinIo 壓縮包中 Binaries 目錄下的 WinIo 相對應的 dll 和 sys 文件拷貝到 pciutils 的更目錄下。
- 接下來就開始正式編譯工作了。非常簡單,進入到 pciutils 的根目錄下,打入 make 稍等片刻,lspci 和 setpci 就生成好了。
Windows 下的 lspci 和 setpci 的使用方法完全和 Linux 中一摸一樣。使用 -t 查看 tree view,使用 -xxx 來 dump configuration space, 使用 -vvv 查看具體功能描述,這些都不再贅述。呵呵。