openwrt下的makefile文件,不同于普通linux下的makfile文件。
现整理一份在openwrt下写过的makefile,供以后参考。
一、Makefile文件
项目名称为ccon_ap。
1.1 代码
# Kernel module ccon_ap
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=ccon_ap
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define KernelPackage/ccon_ap
SUBMENU:=Other modules
NDS:=@TARGET_octeon
TITLE:=Support Module for ccon_ap
AUTOLOAD:=$(call AutoLoad,81,ccon_ap)
FILES:=$(PKG_BUILD_DIR)/ccon_ap/ccon_ap.$(LINUX_KMOD_SUFFIX)
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) -R ./src/* $(PKG_BUILD_DIR)/
endef
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
ARCH="$(LINUX_KARCH)" \
SUBDIRS="$(PKG_BUILD_DIR)/ccon_ap" \
EXTRA_CFLAGS="-g $(BUILDFLAGS)" \
modules
endef
$(eval $(call KernelPackage,ccon_ap))
1.2 对应的目录结构
ccon_ap目录 -> src目录、Makefile(上面的) -> ccon_ap目录 -> *.h *.c Makefile(见下面)
目录结构需按上面结构存放,否则需要修改上面的Makefile。
后面的Makefile,只需要列出要生产的.o文件名,如下:
obj-m := ccon_ap.o
ccon_ap-objs := ap_main.o other.o
二、编译
2.1 配置
在指定目录下,执行make menuconfig:
Kernel modules -> Other modules -> kmod-ccon_ap -> 选中(S)
2.2 编译
编译:make (如果编译出错,make V=s查看调试信息; 参数 make -j4,是使用4个CPU编译)
清除:make clean