2012-11-10 20 views
2

我的Makefile文件看起來是這樣的:gcc使用-o而不是-o3來構建?

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至-02或-03,我得到的錯誤:

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。

+3

優化器設置的'-O'(大寫)。 – Mat

回答

7

-o render表示創建名稱爲render的輸出文件。

現在您將這個-o更改爲-o3,這是不正確的。相反,您需要保持-o render原樣,並添加-O3標誌進行優化。請注意大寫字母O

+0

除了試圖鏈接時間優化編譯時沒有優化的對象幾乎毫無意義(-o名稱與-c name.c執行相同的操作)這一事實之外。如果你想實際優化,只需用-O2或-Os或-O3代替-o這是另一個不區分大小寫跳過經驗豐富的Windows用戶的例子...... btw C也是區分大小寫的:p -brad(我的名字不區分大小寫;)) – technosaurus

4

-o是輸出文件標誌。你在考慮-O(首都)。

+0

那真是令人尷尬。完全滑了我的腦海。謝謝! – dst2

相關問題