使用 vi 创建一个 makefile 文件,分步完成对 add.c 和 main.c 文件的编译、链接,并最终生成 一个可执行文件 app。
时间: 2024-02-25 07:59:48 浏览: 75
好的,我会根据您的要求提供对应的指令。请按以下步骤操作:
1. 打开终端,使用 cd 命令进入 add.c 和 main.c 文件所在的目录。
2. 使用 vi 命令创建一个名为 Makefile 的文件:`vi Makefile`。
3. 按下 i 进入编辑模式,输入以下内容:
```
app: add.o main.o
gcc -o app add.o main.o
add.o: add.c
gcc -c add.c
main.o: main.c
gcc -c main.c
```
4. 按下 Esc 键,再输入 :wq,保存并退出 vi 编辑器。
5. 在终端中运行 make 命令,即可编译并链接 add.c 和 main.c 文件,生成一个名为 app 的可执行文件。
如果一切顺利,您应该会看到类似以下的输出:
```
gcc -c add.c
gcc -c main.c
gcc -o app add.o main.o
```
希望这个回答能够帮到您!
相关问题
一个c语言的项目包含main.c和add.c两个文件,请写出编译该项目的makefile文件内容,要求生成执行文件名称为 add
下面是一个可能的makefile内容,可以编译生成名为add的可执行文件:
```
add: main.o add.o
gcc -o add main.o add.o
main.o: main.c
gcc -c main.c
add.o: add.c
gcc -c add.c
clean:
rm -f add main.o add.o
```
其中,第一行指定目标文件add,依赖于main.o和add.o两个文件。第二行是生成可执行文件的命令。第3~5行分别指定了生成main.o和add.o的命令,并指定了源文件名。最后一行是一个伪目标,用于清除生成的文件。
linux下写一个makefile,编译文件夹下所有的.c .cc .cpp生成目标文件main,
好的,下面是一个简单的 Makefile 示例,可以编译指定目录下所有的 .c、.cc、.cpp 文件生成目标文件 main:
```
CC = gcc
CXX = g++
CFLAGS = -Wall
CXXFLAGS = -Wall
# 源文件目录
SRC_DIR = src
# 所有 .c、.cc、.cpp 文件
SRCS = $(wildcard $(SRC_DIR)/*.c) $(wildcard $(SRC_DIR)/*.cc) $(wildcard $(SRC_DIR)/*.cpp)
# 目标文件目录
OBJ_DIR = obj
# 所有目标文件
OBJS = $(addprefix $(OBJ_DIR)/, $(notdir $(SRCS:%.c=%.o) $(SRCS:%.cc=%.o) $(SRCS:%.cpp=%.o)))
# 目标文件名
TARGET = main
$(TARGET) : $(OBJS)
$(CXX) -o $@ $^
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cc
$(CXX) $(CXXFLAGS) -c -o $@ $<
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
.PHONY : clean
clean :
rm -f $(OBJ_DIR)/*.o $(TARGET)
```
在该 Makefile 中,我们使用了以下变量:
- `CC`:C 语言编译器。
- `CXX`:C++ 编译器。
- `CFLAGS`:C 语言编译选项。
- `CXXFLAGS`:C++ 编译选项。
- `SRC_DIR`:源文件目录。
- `SRCS`:所有 .c、.cc、.cpp 文件。
- `OBJ_DIR`:目标文件目录。
- `OBJS`:所有目标文件。
- `TARGET`:目标文件名。
Makefile 中的规则如下:
- `$(TARGET)`:目标文件,依赖于所有目标文件,使用 C++ 编译器链接它们。
- `$(OBJ_DIR)/%.o`:目标文件的规则,依赖于对应的源文件,使用 C 或 C++ 编译器编译它们。
- `.PHONY : clean`:声明 clean 是一个伪目标。
- `clean`:删除所有目标文件和目标文件。
使用命令 `make` 即可编译生成目标文件。如果要清除目标文件,可以使用命令 `make clean`。