当前位置:网站首页>通用的 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)
边栏推荐
猜你喜欢
随机推荐
BoredApeYachtClub 无聊猿-NFT 源码解析第二节
GBase 8a技术特性-集群架构
若依分离版—移动端开发通知公告功能
js严格模式
GBase 8s共享内存中的常驻内存段
JS继承的几种方式及优缺点
BoredApeYachtClub 无聊猿-NFT 源码解析第一节
如何正确使用OPcache优化系统性能
经纬度距离
GBase 8s分片技术介绍
《现代密码学》学习笔记——第七章 密钥管理[一]
关于电脑电源选项,开合盖设置
Redis哨兵模式
MGRE实验
GBase 8s 执行计划查询分析
windows下的redis安装及密码修改
GBase 8s存储结构简介及空间管理
【mysql】查询不区分大小写(用户密码登录不区分大小写)
若依分离版—增加通知公告预览功能
动画(其二)

![《现代密码学》学习笔记——第七章 密钥管理[一]](/img/ca/ab51bc9afc7c902b2009283109ef8c.png)







