日期:2014-05-16  浏览次数:20913 次

usb-modeswitch交叉编译
现在移植一个3G的无线网卡,USB接口,利用usb-modeswitch将其转换为串口模式
版本
检查编译器 arm-arm2007q3
  usb-modeswitch-1.1.2
  libusb-0.1.12
检查编译libusb-0.1.12时,配置如下
./configure --build=i686-linux --host=arm-linux --prefix=/opt/libusb-0.1.12/install
make 没有问题
但是在编译usb-modeswitch-1.1.2时就出现了如下问题

[root@localhost usb-modeswitch-1.1.2]# make
/usr/local/arm/arm-2007q3/bin/arm-none-linux-gnueabi-gcc -o usb_modeswitch usb_modeswitch.c -Wall -l usb -I /opt/libusb-0.1.12/install/include -L /opt/libusb-0.1.12/install/lib
/usr/local/arm/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /opt/libusb-0.1.12/install/lib/libusb.so when searching for -lusb
/usr/local/arm/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /opt/libusb-0.1.12/install/lib/libusb.a when searching for -lusb
/usr/local/arm/arm-2007q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lusb
collect2: ld returned 1 exit status
make: *** [usb_modeswitch] 错误 1

很奇怪,以前在6446上移植时,用的arm_v5t_le这个版本的编译器就不会出这样的问题,而且这次用这个也试了,同样没问题。
望高人能解答


------解决方案--------------------
cannot find -lusb
====================
很明显找不到 libusb 的路径。 
你设置一下 LD_LIBRARY_PATH 就行了。
------解决方案--------------------
错误信息很明显了 lusb库不正确 
工具链之间也会有差异,包含的库会有差别,可能你以前的工具链已经包含过lusb库了,而现在的工具链没有

而-I /opt/libusb-0.1.12/install/include -L /opt/libusb-0.1.12/install/lib, -I 和-L之后没有空格才对
你可以在编译usb-modeswitch-1.1.2时,设置环境量
CPPFLAGS=-I/opt/libusb-0.1.12/install/include LDFLAGS=-L/opt/libusb-0.1.12/install/lib
------解决方案--------------------
因为你这次用的编译器是:arm-none-linux-gnueabi-gcc
------解决方案--------------------
猜测是eabi的原因
要么都用eabi,要么都不是
------解决方案--------------------
1、你是怎么手动建立的。
2、试试用mdev -s看能不能自动建立节点
------解决方案--------------------
1、手动创建初步看起来没什么问题。你把网络设备变成字符设备了?
2、给你个mdev的参考资料,你可以参考一下:
http://blog.csdn.net/yichi7758/archive/2009/03/13/3987634.aspx