gcc使用-o而不是-o3构建?

时间:2012-11-10 10:33:42

标签: 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*

这构建我的可执行文件没有错误,但是当我将-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。

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

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