c - 如何解决 GNU make 产生“循环 main.c”错误
问题描述
//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 <- main.c 依赖项丢弃错误)
我试图制作一个只运行的代码
gcc -O2 -c -o main.o main.c
但我仍然收到循环 main.c 错误,我不知道这意味着什么。
我试图查找 gnu make 手册,但我想通了,这将需要我的生命来理解。
所以我试图查看代码并用我看到的内容制作一个。
我想我了解makefile.conf的概念,但仍然不了解.SUFFIXES的功能。
我理解为注意到 make 我将使用 .c 和 .o 制定规则,然后在 makefile.conf 中的代码定义了将在 makefile 中使用的变量。
如何更正代码?当实际的“分配”只用了五分钟,包括添加评论。
解决方案
第一个生成文件:
main:
gcc -O2 -c -o main.o main.c
gcc -o main main.o -lwiringPi
当它完美运行时,第二个makefile:
main: main.o
gcc -o main main.o -lwiringPi
main.o: main.c
gcc -O2 -c -o main.o main.c
当它完美运行时,第三个makefile:
main: main.o
gcc -o $@ $^ -lwiringPi
main.o: main.c
gcc -O2 -c -o $@ $<
当它完美运行时,您将为更高级的技术做好准备。
推荐阅读
- google-cloud-sql - 导出单个数据库,导入到不同的数据库,仅控制台
- swift - 在 Swift 中旋转 NSImage
- firebase - 当我使用“POST”方法时,为什么 Firebase 在上传之前创建一个字符串
- c# - 仅将一个单词从 TextBox 传递到另一个 TextBox
- python - Python中的列表按整数降序排序
- python - 如何更新显示的值而不是每次在 Python 中打印?
- mysql - @mysql/xdevapi 在插入数据时返回无效的输入表达式(MySQL 8)
- php - X-cart css 和类别图像没有改变
- bash - Unix如何将fuser命令输出存储到变量中
- asp.net - 哪个更合适:Windows 服务还是 WCF 服务?