67 lines
1.7 KiB
Makefile
67 lines
1.7 KiB
Makefile
# ================================================================
|
||
# 1. 确保交叉编译工具链路径正确
|
||
# 2. 确保源码放在src目录,头文件放在inc目录
|
||
# 3. 命令行执行:
|
||
# make # 编译
|
||
# make clean # 清理
|
||
#
|
||
# 4. 编译输出文件在build下:msg_udp_ctrl.out
|
||
# ================================================================
|
||
|
||
# TODO 交叉编译器路径配置
|
||
TOOLCHAIN_DIR ?= /home/qieyuan/bupt_project/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
|
||
CROSS_COMPILE ?= $(TOOLCHAIN_DIR)/bin/aarch64-linux-gnu-
|
||
|
||
# 编译配置
|
||
CC = $(CROSS_COMPILE)gcc
|
||
AR = $(CROSS_COMPILE)ar
|
||
STRIP = $(CROSS_COMPILE)strip
|
||
|
||
# 输出目录配置
|
||
BUILD_DIR = build
|
||
TARGET = $(BUILD_DIR)/msg_udp_ctrl.out
|
||
|
||
# 代码目录配置
|
||
SRC_DIR = src
|
||
INC_DIR = inc
|
||
OBJ_DIR = $(BUILD_DIR)/obj
|
||
|
||
# 编译器选项配置
|
||
CFLAGS = -O2 -Wall -Werror -g
|
||
CFLAGS += -I$(INC_DIR) # 头文件搜索路径
|
||
CFLAGS += -MMD -MP # 自动生成依赖关系
|
||
CFLAGS += -fPIC # 位置无关代码
|
||
LDFLAGS = -lpthread -lrt # 多线程与mmap拓展库
|
||
|
||
# UDP专用宏定义
|
||
# DEFINES = -DUSE_UDP_OPTIMIZE=1
|
||
# CFLAGS += $(DEFINES)
|
||
|
||
# 自动收集源文件
|
||
SRCS = $(wildcard $(SRC_DIR)/*.c)
|
||
OBJS = $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
|
||
DEPS = $(OBJS:.o=.d) # 依赖
|
||
|
||
# ======================== 构建规则 ===============================
|
||
|
||
.PHONY: all clean
|
||
|
||
all: $(TARGET)
|
||
|
||
# 主目标链接
|
||
$(TARGET): $(OBJS)
|
||
@echo "Linking $@"
|
||
@mkdir -p $(@D) # 创建目标目录
|
||
$(CC) $^ -o $@ $(LDFLAGS)
|
||
|
||
# 编译规则
|
||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
|
||
@echo "Compiling $<"
|
||
@mkdir -p $(@D) # 创建对象目录
|
||
$(CC) $(CFLAGS) -c $< -o $@
|
||
|
||
# 包含自动生成的依赖关系
|
||
-include $(DEPS)
|
||
|
||
clean:
|
||
rm -rf $(BUILD_DIR)
|