gcc使用-o构建,但不使用-o3?

gcc使用-o构建,但不使用-o3?,c,gcc,compiler-errors,compiler-optimization,C,Gcc,Compiler Errors,Compiler Optimization,我的Makefile如下所示: CC=gcc CFLAGS=-Wall -Wextra -std=c99 -pedantic OBJECTS=main.o Scene.o Matrix.o Vector.o Triangle.o Color.o Raster.o render: $(OBJECTS) $(CC) $(CFLAGS) -lm -o render -g $(OBJECTS) rm $(OBJECTS) clean: rm -f render* 这会生成无

我的Makefile如下所示:

CC=gcc
CFLAGS=-Wall -Wextra -std=c99 -pedantic
OBJECTS=main.o Scene.o Matrix.o Vector.o Triangle.o Color.o Raster.o

render: $(OBJECTS)
    $(CC) $(CFLAGS) -lm -o render -g $(OBJECTS)
    rm $(OBJECTS)

clean:
    rm -f render*
这会生成无错误的可执行文件,但当我将-o更改为-o2或-o3时,会出现以下错误:

gcc -Wall -Wextra -std=c99 -pedantic   -c -o main.o main.c
gcc -Wall -Wextra -std=c99 -pedantic   -c -o Scene.o Scene.c
gcc -Wall -Wextra -std=c99 -pedantic   -c -o Matrix.o Matrix.c
gcc -Wall -Wextra -std=c99 -pedantic   -c -o Vector.o Vector.c
gcc -Wall -Wextra -std=c99 -pedantic   -c -o Triangle.o Triangle.c
gcc -Wall -Wextra -std=c99 -pedantic   -c -o Color.o Color.c
gcc -Wall -Wextra -std=c99 -pedantic   -c -o Raster.o Raster.c
gcc -Wall -Wextra -std=c99 -pedantic -lm -o3 render -g main.o Scene.o Matrix.o Vector.o Triangle.o Color.o Raster.o
gcc.exe: error: render: No such file or directory
make: *** [render] Error 1

优化标志检测到我的代码中可能有一些错误,但在此之前我没有收到任何错误消息,因此很难知道出了什么问题。我正在Windows 7上使用MinGW/MSYS。

-o
是输出文件标志。您考虑的是
-O
(大写)。

-O render
表示创建名为
render
的输出文件


现在您将此
-o
更改为
-o3
,这是不正确的。相反,您需要保持
-o渲染
,并添加一个
-O3
标记以进行优化。请注意,对于优化器设置,大写字母
O

-O
(大写)。此外,尝试链接未经优化编译的时间优化对象几乎毫无意义(-O名称与-c name.c的作用相同)。只要用-O2或-Os或-O3替换-o名称,如果您想要实际的优化,这是另一个不区分大小写的例子,会让经验丰富的windows用户绊倒。。。顺便说一句,C也区分大小写:p-brad(我的名字不区分大小写;))