http://www.asix.com.tw/download.php?sub=searchresult下载到
我先在linux上装了个交叉编译环境,用cross-3.3.2.tar装的,就是将该文件解压到/usr/local/arm/路径下。
然后make驱动压缩文件,但报错:
make -C /work SUBDIRS=/home/LinuxSource/v1.1.0 modules
make [1]:Entering directory '/work'
make [1]:**no rule to make target 'modules',stop
make [1]:Leaving directory '/work'
make [default] Error 2
其中/home/LinuxSource/v1.1.0是我放驱动解压文件的路径
驱动的MakeFile文件为:
TARGET = ax88180
OBJS = ax88180.o
EXTRA_CFLAGS = -DEXPORT_SYMTAB
# <path-to-your-target-Linux2.6.x-kernel>
CURRENT = 2.6.x
KDIR = /work
# <path-to-your-target-Linux2.4.x-kernel>
#CURRENT = 2.4.20
#KDIR = /work/s3c2440_kernel2.4.20_cee31_rel1.0/include
ifneq (,$(findstring 2.4.,$(CURRENT)))
# <specify-your-CrossCompiler-for-kernel-version-2.4.x>
CROSS_COMPILE = /usr/local/arm/3.3.2/bin/arm-linux-
HOSTCC = gcc
CC = $(CROSS_COMPILE)gcc
CCFLAGS = -DMODULE
CCFLAGS += -D__KERNEL__
CCFLAGS += -I$(KDIR)
CCFLAGS += -Wall
CCFLAGS += -Wstrict-prototypes
CCFLAGS += -Os
CCFLAGS += -g
CCFLAGS += -D__LINUX_ARM_ARCH__=4
CCFLAGS += -march=armv4
CCFLAGS += -mtune=arm9tdmi
CCFLAGS += -DKBUILD_BASENAME=ax88180
else
PWD = $(shell pwd)
endif
obj-m := $(TARGET).o
ifneq (,$(findstring 2.4.,$(CURRENT)))
default: %.o: %.c %.h
@echo " "
@echo "Making $<"
$(CC) $(CCFLAGS) -c $< $(TARGET).c
else
default:
make -C $(KDIR) SUBDIRS=$(PWD) modules
$(TARGET).o: $(OBJS)
$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)
endif
clean:
-rm -f *.o *.ko .*.cmd .*.flags *.mod.c
-include $(KDIR)/Rules.make
为什么不能成功make啊?请大侠指点!!!!谢谢!!!!!!!!!!!!!
6 个解决方案
#1
Have you compile the kernel before you compile this module??
#2
上面做的编译网卡我只能在台式机上进行,不能在硬件上进行,硬件的内核好像不支持GCC。
#3
LZ还没有搞清楚嵌入式的开发环境问题呀
一般来说嵌入式的板子被称为目标板或目标机,而开发环境则安装在PC机上,被称为宿主机.程序需要在宿主机上开发和编译,编译要使用交叉编译环境,使用特定的编译器将程序编译为目标板能识别的格式,在目标板上一般是不会配置GCC 等编译环境的.
在你编译相应模块之前,一般会要求内核代码树,而内核代码树需要对linux内核进行配置和编译
一般来说嵌入式的板子被称为目标板或目标机,而开发环境则安装在PC机上,被称为宿主机.程序需要在宿主机上开发和编译,编译要使用交叉编译环境,使用特定的编译器将程序编译为目标板能识别的格式,在目标板上一般是不会配置GCC 等编译环境的.
在你编译相应模块之前,一般会要求内核代码树,而内核代码树需要对linux内核进行配置和编译
#4
# <path-to-your-target-Linux2.6.x-kernel>
CURRENT = 2.6.x
KDIR = /work
2.6内核的编译,可以把驱动模块目录包含进内核的编译目录去
上面这两个环境变量需要设置吧
一个是内核的版本号,还有一个是你驱动程序所在目录
CURRENT = 2.6.x
KDIR = /work
2.6内核的编译,可以把驱动模块目录包含进内核的编译目录去
上面这两个环境变量需要设置吧
一个是内核的版本号,还有一个是你驱动程序所在目录
#5
3楼说的对。需要交叉编译环境才能进行编译的。
#6
# <path-to-your-target-Linux2.6.x-kernel>
CURRENT = 2.6.x
KDIR = /work
这句是需要指定你将要移植的内核
如在你的/work下有2.6.15的linux内核源码,你应该改为
CURRENT = 2.6.25
KDIR = /work/linux-2.6.25
CURRENT = 2.6.x
KDIR = /work
这句是需要指定你将要移植的内核
如在你的/work下有2.6.15的linux内核源码,你应该改为
CURRENT = 2.6.25
KDIR = /work/linux-2.6.25
#1
Have you compile the kernel before you compile this module??
#2
上面做的编译网卡我只能在台式机上进行,不能在硬件上进行,硬件的内核好像不支持GCC。
#3
LZ还没有搞清楚嵌入式的开发环境问题呀
一般来说嵌入式的板子被称为目标板或目标机,而开发环境则安装在PC机上,被称为宿主机.程序需要在宿主机上开发和编译,编译要使用交叉编译环境,使用特定的编译器将程序编译为目标板能识别的格式,在目标板上一般是不会配置GCC 等编译环境的.
在你编译相应模块之前,一般会要求内核代码树,而内核代码树需要对linux内核进行配置和编译
一般来说嵌入式的板子被称为目标板或目标机,而开发环境则安装在PC机上,被称为宿主机.程序需要在宿主机上开发和编译,编译要使用交叉编译环境,使用特定的编译器将程序编译为目标板能识别的格式,在目标板上一般是不会配置GCC 等编译环境的.
在你编译相应模块之前,一般会要求内核代码树,而内核代码树需要对linux内核进行配置和编译
#4
# <path-to-your-target-Linux2.6.x-kernel>
CURRENT = 2.6.x
KDIR = /work
2.6内核的编译,可以把驱动模块目录包含进内核的编译目录去
上面这两个环境变量需要设置吧
一个是内核的版本号,还有一个是你驱动程序所在目录
CURRENT = 2.6.x
KDIR = /work
2.6内核的编译,可以把驱动模块目录包含进内核的编译目录去
上面这两个环境变量需要设置吧
一个是内核的版本号,还有一个是你驱动程序所在目录
#5
3楼说的对。需要交叉编译环境才能进行编译的。
#6
# <path-to-your-target-Linux2.6.x-kernel>
CURRENT = 2.6.x
KDIR = /work
这句是需要指定你将要移植的内核
如在你的/work下有2.6.15的linux内核源码,你应该改为
CURRENT = 2.6.25
KDIR = /work/linux-2.6.25
CURRENT = 2.6.x
KDIR = /work
这句是需要指定你将要移植的内核
如在你的/work下有2.6.15的linux内核源码,你应该改为
CURRENT = 2.6.25
KDIR = /work/linux-2.6.25