【发布时间】:2026-01-16 13:55:01
【问题描述】:
//makefile.conf
.SUFFIXES : .c .o
cc = gcc
CFLAG = -c
OFLAG = -o
O2FLAG = -O2
WPIFLAG = -lwringPi
RM = rm -rf
TARGET_SRCS = main.c
TARGET_OBJS = $(TARGET_SRCS:$.c=$.o)
TARGET_NAMES = $(TARGET_SRCS:$.c=$)
BINARY_NAME = LED_TEST
// 生成文件
include makefile.conf
$(TARGET_OBJS) : $(TARGET_SRCS)
$(CC) $(O2FLAG) $(CFLAG) $(OFLAG) $^
我试图弄清楚 gnu make 的工作原理以及如何使用它。然而,我是初学者。
我正在尝试在我的作业中使用 make(不是强制性的,只是我的热情)来运行通过使用 Wiringpi 点亮 LED 的简单代码。
其实只有一个main.c,我要做的是运行的makefile
gcc -O2 -c -o main.o main.c
gcc -o main main.o -lwiringPi
由于我上一个代码不起作用,(不断循环 main.c
我试图制作一个只运行的代码
gcc -O2 -c -o main.o main.c
但我仍然收到循环 main.c 错误,我不知道这是什么意思。
我试图查找 gnu make 手册,但我想通了,这将需要我一生的时间才能理解。
所以我正在尝试查看代码并用我看到的内容制作一个。
我想我了解makefile.conf的概念,但还是不明白.SUFFIXES的功能。
我理解为注意到make我将用.c和.o制定规则,makefile.conf中的代码定义了将在makefile中使用的变量。
我怎样才能更正代码?当实际的“分配”只用了五分钟,包括添加 cmets。
【问题讨论】:
-
顺便提一下,关于循环依赖的原始消息的原因是因为您对函数使用了错误的语法:这两个:
$(TARGET_SRCS:$.c=$.o)和$(TARGET_SRCS:$.c=$)都是错误的,因为模式字符是%不是$。这些应该是:$(TARGET_SRCS:%.c=%.o)和$(TARGET_SRCS:%.c=%)。然而,第一个无论如何都会意外地工作,所以我认为你没有准确地粘贴你在这里实际使用的 makefile。