编译linux系统下libusb,在Ubuntu上交叉编译libusb,libusb-compat,usbutils和usb_mode

配置完之后,进行编译。输入make或者make intall,将出现如下error信息:

**************************清单4**************************

...

make  all-recursive

make[1]: Entering directory `/home/decuhi/project/New/libusb-compat-0.1.3'

Making all in libusb

make[2]: Entering directory `/home/decuhi/project/New/libusb-compat-0.1.3/libusb'

/bin/sh ../libtool --tag=CC   --mode=compile arm-linux-gcc -DHAVE_CONFIG_H -I. -I..    -fvisibility=hidden -std=gnu99  -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow -I/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/arm-linux//include/libusb-1.0   -g -O2 -MT libusb_la-core.lo -MD -MP -MF .deps/libusb_la-core.Tpo -c -o libusb_la-core.lo `test -f 'core.c' || echo './'`core.c

libtool: compile:  arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -fvisibility=hidden -std=gnu99 -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow -I/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/arm-linux//include/libusb-1.0 -g -O2 -MT libusb_la-core.lo -MD -MP -MF .deps/libusb_la-core.Tpo -c core.c  -fPIC -DPIC -o .libs/libusb_la-core.o

cc1: error: unrecognized command line option "-Wno-pointer-sign"

cc1: error: unrecognized command line option "-fvisibility=hidden"

make[2]: *** [libusb_la-core.lo] Error 1

make[2]: Leaving directory `/home/decuhi/project/New/libusb-compat-0.1.3/libusb'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/decuhi/project/New/libusb-compat-0.1.3'

make: *** [all] Error 2

...

*********************************************************

记得当时是太相信google了,半天都没找到答案,后来百度一下才找到,很无语的说。

说是编译器版本太低的缘故。在高版本里面才支持"-Wno-pointer-sign"、"-fvisibility=hidden"。

后来使用PC上的编译器(gcc版本4.4.1,而arm-linux-gcc是3.4.4)试了一下,就没出现这个错误,由此可推断确实是编译器版本问题。既然低版本没有这个指令,我就删掉libusb-compat-0.1.3/libusb/Makefile里面的"-Wno-pointer-sign"和"-fvisibility=hidden",之后OK(如果其他Makefile也有,也要删)。编完之后也要将库和头文件复制到工具链里面去。

这部分解决之后,后面就轻松了。

/*

*usb_modeswitch

*/

交叉编译usb_modeswitch时,需修改下Makefile

将第3、4行的

3 STRIP       = strip

4 CC          = gcc

改成

3 STRIP       = arm-linux-strip

4 CC          = arm-linux-gcc

make之后会在当前目录下生成usb_modeswitch的二进制文件。

===========

关于usbutils,有个令我不得不记录的可恨回忆:

当时交叉编译时没设定安装路径,不小心安装到系统上。当时想先彻底删除掉这个工具,然后再安装。因为系统是自带usbutils工具的,所以在终端上输入sudo apt-get remove usbutils,之后冒出一大堆信息

正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

下列软件包将被【卸载】:

checkbox checkbox-gtk gnome-mount gnome-power-manager hal hal-cups-utils lshw network-manager network-manager-gnome Ubuntu-desktop ubuntu-standard update-notifier usbutils xorg xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-vmmouse xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident xserver-xorg-video-tseng xserver-xorg-video-v4l xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo

共升级了 0 个软件包,新安装了 0 个软件包,要卸载 55 个软件包,有 0 个软件未被升级。

解压缩后将会空出 38.7MB 的空间。

您希望继续执行吗?[Y/n]

毕竟是新手,什么都不懂,之后按下Y。杯具就此产生,不仅没有图形界面,而且也上不了网。再之后,折腾半天才弄回来。

============2010-02-01

放到板子上的库只需要动态库即可,静态库可不用添加。根据usb_modeswitch的说明,他是基于libusb 0.1.12库编译生成的,所以其实只要编译Legacy release的0.1.12版本就行了,不用装什么1.0跟compat。0b1331709591d260c1c78e86d0c51c18.png

你可能感兴趣的:(编译linux系统下libusb,在Ubuntu上交叉编译libusb,libusb-compat,usbutils和usb_mode)