接下来要编译的是Usbredir,在编译之前大致介绍一下什么是Usbredir:
usbredir is the name of a networkprotocol for sending usb device traffic over a network connection. It is alsothe name of the software package offering a parsing library, a usbredirhostlibrary and several utilities implementing this protocol.
也就是说,usbredir是通过网络连接将USB设备的数据包从主机端通过网络协议(现在一般是TCP/IP)发给客户机(虚拟机),它包括一个USB协议的解析库,主机库和其他一些工具。Usbredir是spice社区为了支持USB设备的重定向而开发的,下面网址是关于它的一个协议介绍:http://cgit.freedesktop.org/~jwrdegoede/usbredir/tree/usb-redirection-protocol.txt
同样,我们首先从https://launchpad.net/debian/+source/usbredir/0.6-2 获得源码包:
Usbredir_0.6-2.debian.tar.gz,usbredir_0.6-2.dsc和usbredir_0.6.orig.tar.bz2
下载以后将上述三个文件上传至编译目录: ~/workroom/usbredir/。
用下面的命令解开源码:
dev@xxx:~/workroom/ usbredir $ sudo dpkg-source –x usbredir_0.6-2.dsc |
进入新生成的目录 usbredir-0.6
编译命令相当简单:
dev@xxx:~/workroom/usbredir/usbredir-0.6$ sudo debuild |
结果编译出错,错误原因是: Unmet build dependencies: libusb-1.0-0-dev
原来Usbredir是依赖于 libusb的,这也好理解,libusb是最底层直接跟主机usb驱动打交道的库,而Usbredir是用于解析和传输USB包的,它当然是通过libusb库来获得USB数据。
于是我们把上一次编译的libusb debian包先装上:
dev@xxx:~/workroom/libusbx/libusbx-1.0.15$ sudo dpkg –i libusb-1.0-0_1.0.15-1_amd64.deb libusb-1.0-0-dev_1.0.15-1_amd64.deb |
接下来,继续编译
dev@xxx:~/workroom/ usbredir /usbredir-0.6$ sudo debuild |
这次顺利编译完成。
同样,生成的Usbredir的包在上一层目录下:
Libusbredirhost1_0.6-2_amd64.deb,libusbredirhost-dev_0.6-2_amd64.deb, libusbredirparser1_0.6-2_amd64.deb,libusbredirparser-dev_0.6-2_amd64.deb, usbredirserver_0.6-2_amd64.deb。
这些包在下一个模块的编译中需要用到。