编译 usb31000sw usb-ethernet 适配器驱动程序时出现问题

编译 usb31000sw usb-ethernet 适配器驱动程序时出现问题

我正在尝试为 Startech USB31000SW 构建驱动程序。其中包含一个 Linux 驱动程序,但必须对其进行编译和安装。运行时make出现以下错误:

make -C /lib/modules/3.2.0-52-generic-pae/build SUBDIRS=/home/lars/Hämtningar/usbnet/Linux/Kernel 2.6.x_3.x modules
make[1]: Går till katalogen "/usr/src/linux-headers-3.2.0-52-generic-pae"
make[1]: *** Ingen regel för att skapa målet "2.6.x_3.x".  Stannar. 
make[1]: Lämnar katalogen "/usr/src/linux-headers-3.2.0-52-generic-pae"
make: *** [default] Error 2

第三行翻译为:没有创建目标的规则

根据自述文件,需要内核源,因此我从 Synaptic 安装了它。

这是 makefile:

CURRENT = $(shell uname -r)
TARGET  = ax88179_178a
OBJS    = ax88179_178a.o
MDIR    = drivers/net/usb
KDIR    = /lib/modules/$(CURRENT)/build
SUBLEVEL= $(shell uname -r | cut -d '.' -f 3 | cut -d '.' -f 1 | cut -d '-' -f 1 | cut -d '_' -f 1)
USBNET  = $(shell find $(KDIR)/include/linux/usb/* -name usbnet.h)

ifneq (,$(filter $(SUBLEVEL),14 15 16 17 18 19 20 21))
MDIR = drivers/usb/net
#USBNET = $(shell find $(KDIR)/$(MDIR)/* -name usbnet.h)
endif

#ifneq (,$(filter $(SUBLEVEL),21 22 23 24))
#USBNET = $(shell find $(KDIR)/$(MDIR)/* -name usbnet.h)
#endif

#$(if $(USBNET),,$(error $(KDIR)/$(MDIR)/usbnet.h not found. please refer to readme file for the detailed description))

EXTRA_CFLAGS = -DEXPORT_SYMTAB
PWD = $(shell pwd)
DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR)

obj-m      := $(TARGET).o

default:
    make -C $(KDIR) SUBDIRS=$(PWD) modules

$(TARGET).o: $(OBJS)
    $(LD) $(LD_RFLAG) -r -o $@ $(OBJS)
pw
install:
    su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"

clean:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

.PHONY: modules clean

-include $(KDIR)/Rules.make

欢迎任何想法

答案1

在此构建目录树中,目录名称中不能有空格。删除目录名称中的空格/home/lars/Hämtningar/usbnet/Linux/Kernel 2.6.x_3.x(“Kernel”和“2.6.x_3.x”之间的空格)后,它应该可以正常工作。

这是因为“make”命令无法识别选项“2.6.x_3.x”。“Make”必须制作(编译)“模块”,但由于命令中有空格,它试图制作“2.6.x_3.x”。

答案2

从 Synaptic,请安装 linux-headers-generic 和 build-essential 并重试。如果仍然无法编译,请提供驱动程序链接,以便我们进一步排除故障。另外,发布:

lsusb

相关内容