如何解决GNU产生“圆形main.c”错误

问题描述 投票:1回答:2

// 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

// makefile

include makefile.conf

$(TARGET_OBJS) : $(TARGET_SRCS)
        $(CC) $(O2FLAG) $(CFLAG) $(OFLAG) $^

我正在尝试弄清楚gnu make如何工作以及如何使用它。但是,我是一个初学者。

我正在尝试在我的作业上使用make(不是强制性的,只是我的热情)来运行简单的代码,该代码通过使用wirepi点亮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的功能。

[我理解这是为了使我用.c和.o制定规则,在makefile.conf之后的代码定义了将在makefile中使用的变量。]​​>

我该如何纠正代码?

实际的“分配”仅花费了五分钟,包括添加注释。

// 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 linux gcc makefile
2个回答
2
投票

第一个makefile:


1
投票

如果您真的很新,从简单的makefile开始直到您需要额外的功能通常会很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.