当前位置:网站首页>通用的 kernel和 userspace Makefile
通用的 kernel和 userspace Makefile
2022-08-11 05:23:00 【丶随心】
User space的Makefile, 保存为一个Makefile文件
TARGET:=main
SOURCE_FILES:=$(wildcard *.c)
INCLUDE_FILES:=$(wildcard *.h)
INCLUDE_FILES+=$(wildcard *.h)
OBJ:=$(patsubst %.c, %.o, $(SOURCE_FILES))
C_FLAGS:= -g -Wall -O2 \
-fsanitize=address
LINK_MODULES:=-pthread
LDFLAGS := -L../out/lib/
#LINK_MODULES += -lmodulename
$(TARGET):$(OBJ)
gcc $(C_FLAGS) $(LINK_MODULES) $(LDFLAGS) -o $(TARGET) $(OBJ)
%.o:%.c $(INCLUDE_FILES)
gcc $(C_FLAGS) -c -o [email protected] $<
.PHONY:clean
clean:
rm -f $(TARGET) $(OBJ)
Kernel space的Makefile, 保存为一个Makefile文件
CONFIG_MODULE_SIG=n
obj-m := icdev.o
CURRENT_PATH:=$(shell pwd)
#the current kernel version number
LINUX_KERNEL:=$(shell uname -r)
#the absolute path
LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
#complie object
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules ######
#clean
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean ######
带目录设置的通用C++ Makefile
######### Makefile COMMON ########
#c or c++
EXTENSION =c
#gcc or g++
CC = gcc
#exe name
TARGET = mpls_dump
#source-file-direction space add-more-as: src src1 src2
SUBDIR =file util .
#.o file direction
OBJ_DIR = out
#(including .h file direction)
#CPPFLAGS += -I ./inc
CPPFLAGS = -I .
# link flags
LDFLAGS += -pthread
# C flags
CFLAGS += -g -Wall -O2 \
-fsanitize=address \
-DHAVE_CONFIG_H
#not change lines below
ALL_SOURCES=$(foreach dir,$(SUBDIR), $(wildcard $(dir)/*.$(EXTENSION)))
SOURCE_TO_OBJECT = ./$(OBJ_DIR)/$(subst .$(EXTENSION),.o,$(notdir $(1)))
ALL_OBJECTS=$(foreach src,$(ALL_SOURCES),$(call SOURCE_TO_OBJECT,$(src)))
define CREATE_OBJECT_TARGET
$(call SOURCE_TO_OBJECT,$(1)) : $(1)
if [ ! -d $(OBJ_DIR) ]; then mkdir -p $(OBJ_DIR); fi;\
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o [email protected] $$^
endef
$(TARGET):$(ALL_OBJECTS)
$(CC) $(CFLAGS) $(LDFLAGS) -o [email protected] $^
mv $(TARGET) $(OBJ_DIR)
$(foreach src,$(ALL_SOURCES),$(eval $(call CREATE_OBJECT_TARGET,$(src))))
all: $(TARGET)
.PHONY:clean
clean:
rm -rf $(OBJ_DIR) $(TARGET)
边栏推荐
猜你喜欢
随机推荐
NodeRed系列—发送消息给emqx
>>开发工具:开发工具排名对比
云计算学习笔记——第四章 存储虚拟化
GBase 8a MPP Cluster产品支撑的平台
若依分离版—增加通知公告预览功能
>>数据管理:DAMA简介
BoredApeYachtClub 无聊猿-NFT 源码解析第二节
【sqlyog】【mysql】csv导入问题
>>数据管理:读书笔记|第一章 数据管理
事件绑定触发
《现代密码学》学习笔记——第三章 分组密码 [三]分组密码的运行模式
>>开发工具:IDEA格式化代码无效
OSI TCP/IP学习笔记
Dos命令
《现代密码学》学习笔记——第七章 密钥管理[一]
动画(其一)
let 块级作用域
四大组件之一BroadCast(其一)
对MySQL查询语句的分析
ES6 迭代器与生成器