linux 编译C语言程序万能makefile文件

一般单个文件使用 gcc 来进行编译,但是如果文件多啦,想一次编译完成怎办呢?

一种解决方案是使用makefile文件,下面给出一个万能的文件格式:

Makefile

SOURCE = $(wildcard *.c)
TARGETS = $(patsubst %.c, %,$(SOURCE))

CC =gcc
CFLAGS = -Wall -g

all:$(TARGETS)

$(TARGETS):%:%.c
	$(CC) $< $(CFLAGS) -o $@

.PHONY:clean all
clean:
	-rm -rf $(TARGETS)

通过上述文件和.c文件一起存放在一个文件夹下,使用make命令即可生成可执行文件。使用make clean可以删除可执行文件。

上述代码解释:

wildcard 表示通配符,寻找到.c文件,也就是我们编写多c语言源代码。

patsubst 表示模式字符串替换,具体作用为目标文件名称为与c语言源文件同名的文件。

CC和CFALGS表示gcc命令和参数。gcc -Wall -g    输出警告和调试信息

$@ 表示目标文件    $< 第一个依赖文件 (其他指令可以参考其他博文)

.PHONY 这个比较有意思,表示伪目标,确保当存在clean文件的时候,也会执行这一句。

 

执行文件的时候,多半是要使用./a.out这种格式。但是cd ls这些命令为什么就不需要./标记呢?其实是PATH 路径的问题,我们自己写的程序没有被PATH包含,所以需要./来制定当前路径,如果不想输入./的话。使用下面多命令输入到当前teiminal

PATH=$PATH:.

表示当前shell的PATH已经包含了当前路径,就不再需要输入./这个符号啦。值得注意的是:此路径仅仅对当前shell有效哦。

又可以愉快的编写程序玩耍啦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值