作者:gallop020142
转自:http://www.amobbs.com/forum.php?mod=viewthread&tid=5554071&highlight=libusb
系统平台:
windows7
工具软件:
1.Winddk7600_1(GRMWDK_EN_7600_1.ISO)
2.Mingw5.1.6
3.Visualstudio 2008(optional)
4.libusbK-3.0.6.0(optional)
具体步骤:
分两步走,第一步先编译出libusb.lib, libusb0.sys, install-filter.exe, istall-filter-win.exe, testlibusb.exe testlibusb-win.exe, libusb0.dll;第二步编译inf_wizard.exe等。
Libusb-win32-src-1.2.6.0的编译:(先编译出libusb.lib, libusb0.sys, install-filter.exe, istall-filter-win.exe, testlibusb.exe testlibusb-win.exe, libusb0.dll)
Step1) 修改ddk_make/make.cfg中的相关内容:
1. Line25 WINDDK_BASE =c:\WinDDK
2. Line26 WINDDK_DIR=!WINDDK_BASE!\7600.16385.1\
3. Line29 注释掉
4. Line49 PACKAGE_ROOT_DIR = C:\libusb-win32\
5. Line76 ISCC=C:\Program Files\Inno Setup 5\ISCC.exe(optional)
6. Line81 IMPLIB=C:\Program Files\Borland\CBuilder6\Bin\implib.exe(optional)
Step2) 修改ddk_make/make.cmd
1. Line175 W2K 修改成WIN7
Step3) 在命令行cd至ddk_make,输入命令make.cmd “arch=x86”进行编译。make.cmd的其余参数的用法可以通过打开make.cmd文本查看该文件的line955-1017(ShowHelp)。
Step4) 要编译Inf_wizard.exe就需编译projects/additional/libwdi,而可以单独进行编译,如下文所示。
Libwdi(Library for Windows Driver Installer, software/progromming/libwdi-1.2.2.tar.gz)的编译
Step1) 打开libwdi-1.2.2/libwdi/embedded_files.h文件,Line50 – line155定义了需要准备的文件,这些文件在libwdi-1.2.2/msvc/config.h中定义。可以查看需要准备的文件如下(只定义OPT_M32, LIBUSB0_DIR, LIBUSBK_DIR):
1. DDK_DIR \\redist\\wdf\\x86\\WdfCoInstaller0 STR(WDF_VER).dll
2. DDK_DIR \\redist\\“COINSTALLER_DIR”\\x86\\winusbcoinstaller2.dll
3. DDK_DIR \\license.rtf
4. LIBUSB0_DIR \\bin\\x86\\libusb0_x86.dll
5. LIBUSB0_DIR \\bin\\x86\\install-filter.exe
6. LIBUSB0_DIR \\bin\\x86\\libusb0.sys
7. LIBUSBK_DIR \\sys\\x86\\libusbK.sys
8. LIBUSBK_DIR \\dll\\x86\\libusbK.dll
Step2) 前3个文件为winddk自带,所以只需在本机任意地址准备如上文件4-8:
1. 从编译的libusb-win32-src-1.2.6.0中复制对应文件到D:/libusb-win32: bin/x86/libusb0_x86.dll, install-filter.exe libusb0.sys
2. 从libusbK的安装目录下找到对应的文件复制到D:/libusbK/bin/dll/x86/libusbK.dll,如果libusbK.sys找不到的话,在c:/windows/system32/drivers下找到并复制libusbK.sys至D:/libusbK/bin/sys/x86/libusbK.sys
Step3) 修改libwdi-1.2.2/msvc/config.h:
1. Line14-16: DDK_DIR修改成本机winddk7600_1的安装地址,如"C:/WinDDK/7600.16385.1",注意所有地址符用”/”或者“\\”,不要用“\”!
2. Line19-21: LIBUSB0_DIR修改成本地libusb-win32-bin的地址,如"D:/libusb-win32"
3. Line24-26: LIBUSBK_DIR 修改成本地libusbK的地址,如"D:/libusbK/bin"
4. Line 34: WDF_VER 修改成winddk的版本 1009
Step4) 借助winddk编译libwdi1.2.2源码:
1. 开始->Windows Driver Kits->WDK 7600.16385.1->build environments->windows7->x86 free build environment
2. 在打开的命令行中cd至libwdi1.2.2的源码路径
3. 在命令行输入ddk_build.cmd(如果要生成dll的话,再加上 dll)
4. 如果编译成功的话,会出来一些类似的信息,表示所编译的工程编译成功(8个executable built, 1个library built)
4 files compiled
1 executable built
如果编译不成功,出现embedded.h文件找不到的情况,则基本肯定是以上步骤,特别是所需准备的文件的路径有问题!
如果以上编译成功的话,可以打开libwdi_2008.sln进一步进行调试。