首页 / 操作系统 / Linux / 在Ubuntu上交叉编译libusb,libusb-compat,usbutils和usb_mode
*********************************************************************** 在Ubuntu上交叉编译libusb,libusb-compat,usbutils和usb_modeswitch *** *********************************************************************** 编译环境:Ubuntu 9.04,arm-linux-gcc-3.4.4. 编译对象:libusb-1.0.2,libusb-compat-0.1.3,usbutils-0.11和usb_modeswitch-1.0.5 工具说明: usb_modeswitch 实现无线上网卡从USB Storage模式切换到Modem模式,详见:http://www.draisberghof.de/usb_modeswitch libusb、libusb-compat usb_modeswitch需要libusb的支持。 libusb分为1.0版和0.1版两种版本,1.0并不向下兼容0.1,需要libusb-compat的支持;因此,你可以同时装上1.0和0.1,但不可同时装0.1版和libusb-compat。详见:http://www.libusb.org/ usbutils Linux下查看usb设备信息的工具 /* *下面主要记录libusb和libusb-compat部分,毕竟过了有一段时间,有些当时遇到的问题现在记不清了 */ 交叉编译前,首先进行配置。在终端上敲入配置命令:./configure --host=arm-linux --prefix=<Your Install DIR> 配置结束后,再输入make install,按回车,出现一堆信息。其中,最后一部分信息为:***********************清单1***************************** ... Libraries have been installed in: <Your Install DIR>If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR" flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH" environment variable during execution - add LIBDIR to the `LD_RUN_PATH" environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR" linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf"See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ... ******************************************************** 因为接下来也要交叉编译其他工具,它们都需要libusb库的支持,所以要将libusb生成的库放到工具链对应的文件夹下(/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/arm-linux下的lib以及include)。如果这时只将头文件和库复制到相应的目录,然后继续编译libusb-compat时会出现一个问题。 就是当你输入配置命令./configure --host=arm-linux --prefix=<Your Install DIR> 后会出现提示,表示没找到LIBUSB包。(这个问题其实在清单1上有提示) *************************清单2************************** ... checking for LIBUSB_1_0... configure: error: Package requirements (libusb-1.0 >= 0.9.1) were not met:No package "libusb-1.0" foundConsider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.Alternatively, you may set the environment variables LIBUSB_1_0_CFLAGS and LIBUSB_1_0_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. ... ********************************************************* 出现这个是因为没有把libusb生成的pkgconfig下的.pc文件复制过去(还要修改里面的prefix路径参数),详见:http://www.linuxidc.com/Linux/2011-03/33432.htm 如果复制之后仍未解决,试着添加PKG_CONFIG_PATH. 成功后,终端上对应的打印信息是 **************************清单3************************** ... checking for LIBUSB_1_0... yes configure: creating ./config.status config.status: creating libusb.pc config.status: creating libusb-config config.status: creating Makefile config.status: creating libusb/Makefile config.status: creating examples/Makefile config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands config.status: executing default commands ... *********************************************************