天天看點

【Linux核心】Linux核心子產品編譯時使用的Makefile檔案模闆

使用時請注意如下兩點:

  • 此檔案須放置到 驅動子產品的源代碼頂級目錄下面
  • 在注釋行

    #WHAT_YOU_NEED_TO_CHANGED

    下面将

    MOD_NAME

    MOD_SRCS

    的取值根據實際情況進行修改
  • 此模闆檔案支援 使用【aarch64-linux-gnu-】交叉編譯工具鍊 進行交叉編譯到ARM64平台上,具體用法見

    make help

    輸出
KVERS := $(shell uname -r)
#若定義了HC_KSD變量, 則以HC_KSD的取值替換預設的linux核心代碼路徑(/lib/modules/$(KVERS)/build)
KSRCDIR = /lib/modules/$(KVERS)/build
ifdef HC_KSD
KSRCDIR := $(HC_KSD)
endif

MAKE = make #代碼預設不進行交叉編譯
#若定義了HC_CTP變量, 則使用【aarch64-linux-gnu-】交叉編譯工具鍊交叉編譯到arm64上
ifdef HC_CTP
MAKE := make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64
endif

# WHAT_YOU_NEED_TO_CHANGED
#指定驅動子產品的名字,注意:驅動子產品的名字千萬不能和本檔案夾内的任何源檔案同名!
MOD_NAME := hello
#指定驅動子產品的所有依賴源檔案
MOD_SRCS := hc_hello.c

#最終由XXX-objs連結生成$(MOD_NAME).o ,再生成$(MOD_NAME).ko
$(MOD_NAME)-objs := $(MOD_SRCS:.c=.o)
obj-m += $(MOD_NAME).o

# 子產品編譯額外FLAG, 放開後将以【完全不優化】模式編譯子產品
# EXTRA_CFLAGS = -g -O0

build: modules
modules clean:
	$(MAKE) -C $(KSRCDIR) M=$(CURDIR) [email protected]
help:
	@echo -e '\n[HC_KSD=/path/to/kernel/srcdir] [HC_CTP=1] make [{build|clean}]\n'
           

繼續閱讀