gcc -o和cc -o的区别
时间: 2024-01-15 09:05:00 浏览: 97
gcc和cc在大多数情况下是等效的,它们都是常见的C编译器。而`-o`选项是用来指定输出文件名的。
使用`gcc -o`或`cc -o`,后面紧跟着要编译的源文件名和输出文件名。例如:
```
gcc -o myprogram myprogram.c
```
或者
```
cc -o myprogram myprogram.c
```
这将会将`myprogram.c`源文件编译为可执行文件,并将可执行文件命名为`myprogram`。
所以,`gcc -o`和`cc -o`的区别主要在于编译器的名称,对于大多数常见的C编译器来说,两者是等效的。
相关问题
make custom_float gcc -c -o Transfer.o Transfer.c -I. gcc -c -o Compute.o Compute.c -I. gcc -c -o main.o main.c -I. main.c:2:10: fatal error: Transfer.h: 没有那个文件或目录 #include "Transfer.h" ^~~~~~~~~~~~ compilation terminated. makefile:9: recipe for target 'main.o' failed make: *** [main.o] Error 1
这个错误提示意味着在 main.c 文件中,无法找到 Transfer.h 文件。这可能是因为在编译 main.c 文件时,编译器无法找到 Transfer.h 文件的路径。你需要检查一下你的 makefile 文件,看看是否正确地指定了头文件的路径。另外,也要确保 Transfer.h 文件确实存在于指定路径下。
你可以尝试在 makefile 文件中添加 `-I.` 选项,表示将当前目录加入头文件搜索路径中,例如:
```
CC=gcc
CFLAGS=-I.
OBJ=Transfer.o Compute.o main.o
%.o: %.c
$(CC) -c -o $@ $< $(CFLAGS)
custom_float: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS)
```
这样,make 命令就会在当前目录中搜索头文件,从而避免了这个错误。
出现以下结果的原因gcc -Wall -Wextra -g -fPIC -c -o src/calculator.o src/calculator.c gcc -Wall -Wextra -g -fPIC -c -o src/greeter.o src/greeter.c make: *** 没有规则可制作目标“gcc”,由“libuser.so” 需求。 停止。
这个错误提示意味着 Makefile 文件中没有定义编译器的规则。在 Makefile 中需要定义编译器的规则,例如:
```
CC=gcc
CFLAGS=-Wall -Wextra -g -fPIC
libuser.so: src/calculator.o src/greeter.o
$(CC) $(CFLAGS) -shared -o libuser.so src/calculator.o src/greeter.o
src/calculator.o: src/calculator.c
$(CC) $(CFLAGS) -c -o src/calculator.o src/calculator.c
src/greeter.o: src/greeter.c
$(CC) $(CFLAGS) -c -o src/greeter.o src/greeter.c
```
这个 Makefile 文件定义了编译器为 gcc,并且定义了编译选项为 -Wall -Wextra -g -fPIC。规定了目标文件 libuser.so 的依赖文件为 src/calculator.o 和 src/greeter.o,以及编译这些文件的规则。
阅读全文