Linux 文件命名.c和.cc区别编译区别
时间: 2023-05-18 18:04:59 浏览: 61
.c和.cc是不同的文件扩展名,.c是C语言源代码文件的扩展名,而.cc是C++语言源代码文件的扩展名。在编译时,.c文件将被编译为C语言程序,而.cc文件将被编译为C++程序。因此,如果你想编写C程序,你应该使用.c文件扩展名,如果你想编写C++程序,你应该使用.cc文件扩展名。
相关问题
请扮演一个Linux Terminal。我的命令是g++ A.cc -o A
好的,我将扮演一个Linux终端。根据您的指令,我将使用 g++ 编译器编译文件 "A.cc" 并将其输出文件命名为 "A"。请看下面的输出:
```
user@hostname:~$ g++ A.cc -o A
```
这条命令使用了 g++ 命令,它是一个 C++ 编译器,常用于在 Linux 中编译 C++ 代码。在这里,我们将通过 g++ 命令编译名为 "A.cc" 的 C++ 代码,并将其输出文件命名为 "A"。命令执行成功后,Linux终端会输出一个新的命令提示符,表示编译已经完成。
linux中有fun1.c,fun2.c,fun3.c,main.c,编写makefile文件使其能在main.c中调用fun1,fun2,fun3
好的,以下是makefile文件的编写方法:
```makefile
# 定义编译器
CC = gcc
# 定义编译选项
CFLAGS = -Wall -Werror
# 定义源文件和目标文件
SRCS = fun1.c fun2.c fun3.c main.c
OBJS = $(SRCS:.c=.o)
# 定义目标程序名称
TARGET = main
# 编译规则
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)
# 每个源文件生成对应的目标文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清除规则
clean:
rm -f $(OBJS) $(TARGET)
```
解释一下每个部分:
- `CC` 是定义编译器的变量,这里使用 `gcc`;
- `CFLAGS` 是定义编译选项的变量,这里加上了 `-Wall` 和 `-Werror`,意思是开启所有警告,并将警告视为错误;
- `SRCS` 是定义源文件的变量,这里包括 `fun1.c`, `fun2.c`, `fun3.c`, `main.c`;
- `OBJS` 是定义目标文件的变量,这里将 `.c` 后缀替换为 `.o` 后得到;
- `TARGET` 是定义目标程序名称的变量,这里命名为 `main`;
- `all` 是默认的目标,即执行 `make` 命令时默认执行的内容,这里是编译 `$(TARGET)`;
- `$(TARGET)` 是目标程序,依赖于 `$(OBJS)`,即 `fun1.o`, `fun2.o`, `fun3.o`, `main.o`,这里使用 `$(CC)` 和 `$(CFLAGS)` 编译链接这些目标文件;
- `%.o: %.c` 是一条模式规则,表示每个 `.c` 文件都可以生成对应的 `.o` 文件,依赖于 `.c` 文件,使用 `$(CC)` 和 `$(CFLAGS)` 编译生成;
- `clean` 是清除目标文件和目标程序的规则,执行 `make clean` 命令时执行,使用 `rm` 命令删除目标文件和目标程序。
使用方法:
1. 将上述代码保存到名为 `Makefile` 的文件中;
2. 在终端中进入源文件所在的目录;
3. 执行 `make` 命令编译生成目标程序;
4. 执行 `./main` 命令运行目标程序;
5. 如果需要清除目标文件和目标程序,可以执行 `make clean` 命令。