编写makefile文件,将当前文件夹下所有.c文件编译成.o文件
时间: 2023-06-04 15:06:57 浏览: 518
好的,这个问题可以回答。您可以使用以下语句编写Makefile文件:
``` Makefile
CC = gcc
CFLAGS = -c -Wall
OBJS = $(wildcard *.c)
PROG = program
all: $(PROG)
$(PROG): $(OBJS:.c=.o)
$(CC) $^ -o $@
%.o: %.c
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f $(OBJS) $(PROG)
```
将该文件保存为Makefile,然后在终端中使用make命令即可生成程序。
相关问题
编写makefile文件,将当前文件夹下所有.l文件编译成lex.yy.c
Sure, 可以提供以下makefile文件:
```
LEX=lex
CC=gcc
CFLAGS=-Wall
all: lex.yy.c
lex.yy.c: *.l
$(LEX) $^
clean:
rm -f lex.yy.c
```
通过运行make命令,就可以将当前文件夹下所有.l文件编译成lex.yy.c了。需要注意的是,当前文件夹下不能有其他文件名为.l的文件,否则会出现问题。
Linux下如何编写个makefile去编译.h文件所在文件夹和.c文件所在文件夹,并且可以链接静态和动态库的代码?
在 Linux 下编写 makefile 的方法如下:
1. 定义变量,如 CC(编译器)、CFLAGS(编译选项)、SRC_DIR(源码所在文件夹)、OBJ_DIR(目标文件所在文件夹)等。
2. 在目标文件和依赖文件之间建立关系,如 $(OBJ_DIR)/%.o : $(SRC_DIR)/%.c。
3. 添加编译和链接命令,如 $(CC) $(CFLAGS) -c $< -o $@ 和 $(CC) $(CFLAGS) -o $@ $^。
4. 添加清理命令,如 rm -f $(OBJ_DIR)/*.o。
5. 通过在命令行中运行 make 命令来执行 makefile。
以下是一个示例 makefile,它能够编译 header 文件所在文件夹和 source 文件所在文件夹,并且可以链接静态库和动态库:
```
CC = gcc
CFLAGS = -I/path/to/headers -L/path/to/libraries -lm -static
SRC_DIR = src
OBJ_DIR = obj
# 将所有 .c 文件转换为 .o 文件
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
# 链接所有 .o 文件
main : $(OBJ_DIR)/main.o $(OBJ_DIR)/foo.o $(OBJ_DIR)/bar.o
$(CC) $(CFLAGS) -o $@ $^
# 清理文件
clean :
rm -f $(OBJ_DIR)/*.o
```
要编译这个 makefile,请在终端中键入 make。要清理文件,请键入 make clean。
注意:这个示例中的路径和文件名应该替换
阅读全文