在Ubuntu系统中,使用GCC编译C或C++程序时,编写Makefile文件可以帮助自动化编译过程。以下是一个简单的Makefile文件示例,以及如何使用它来编译一个C程序。
示例Makefile
假设你有一个名为hello.c的C源文件,你想要编译它生成一个名为hello的可执行文件。以下是一个简单的Makefile:
# 编译器
CC = gcc
# 编译选项
CFLAGS = -Wall -g
# 目标文件
TARGET = hello
# 源文件
SRCS = hello.c
# 依赖文件
DEPS = $(SRCS:.c=.d)
# 默认目标
all: $(TARGET)
# 链接目标文件生成可执行文件
$(TARGET): $(SRCS) $(DEPS)
$(CC) $(CFLAGS) -o $@ $^
# 生成依赖文件
%.d: %.c
$(CC) $(CFLAGS) -MM -MT $(@:.d=.o) $< -MF $@
# 清理生成的文件
clean:
rm -f $(TARGET) $(DEPS)
解释
-
编译器和编译选项:
CC = gcc CFLAGS = -Wall -gCC变量定义了使用的编译器,这里是gcc。CFLAGS变量定义了编译选项,-Wall表示显示所有警告,-g表示包含调试信息。 -
目标文件和源文件:
TARGET = hello SRCS = hello.cTARGET变量定义了最终生成的可执行文件的名称,SRCS变量定义了源文件的列表。 -
依赖文件:
DEPS = $(SRCS:.c=.d)DEPS变量定义了依赖文件列表,这里通过将源文件的扩展名从.c改为.d来生成依赖文件。 -
默认目标:
all: $(TARGET)all是默认目标,当运行make命令时,它会编译生成$(TARGET)。 -
链接目标文件生成可执行文件:
$(TARGET): $(SRCS) $(DEPS) $(CC) $(CFLAGS) -o $@ $^这条规则定义了如何从源文件和依赖文件生成目标文件。
$@表示目标文件,$^表示所有依赖文件。 -
生成依赖文件:
%.d: %.c $(CC) $(CFLAGS) -MM -MT $(@:.d=.o) $< -MF $@这条规则用于生成依赖文件。
%.d: %.c表示对于每个.c文件,生成一个对应的.d文件。 -
清理生成的文件:
clean: rm -f $(TARGET) $(DEPS)clean目标用于删除生成的可执行文件和依赖文件。
使用Makefile
- 将上述内容保存为
Makefile文件。 - 在终端中导航到包含
Makefile和源文件的目录。 - 运行
make命令来编译程序:make - 运行
make clean命令来清理生成的文件:make clean
通过这种方式,你可以轻松地管理和编译你的C或C++项目。
以上就是关于“ubuntu gcc如何编写Makefile文件”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm