簡體   English   中英

如何修復錯誤:g++.exe:無法使用 -c 或 -S 指定 -o 和多次編譯

[英]How to fix error : g++.exe : cannot specify -o with -c or -S and multiple compilations

程序沒有運行。 如何修復它(我使用 C-Free 4.0)? g++.exe : 不能用 -c 或 -S 指定 -o 和多次編譯

你能包括你正在使用的整個構建命令嗎? 我的猜測是,你正在試圖編譯多個文件到可執行的一個命令(如g++ file1.cc file2.cc file3.cc -o file.exe ),但你也有一個-c的標志編譯命令。

作為參考,通常在編譯時,會發生兩件事。 首先,源代碼變成了機器代碼。 其次,機器代碼被鏈接以生成可執行文件。

在 gcc/g++ 中,您可以使用-c標志將一個源文件編譯為機器代碼。 您可以使用-o標志將一個(或多個)機器代碼文件鏈接到可執行文件中。 有一個速記,您可以使用-o標志一步編譯和鏈接所有內容(但這通常不是一個好主意,因為對任何文件的任何更改都需要您重新編譯所有內容)。

至於-S ,那是為了從源代碼生成匯編代碼。 不過,我猜這不是你在做什么。

這是一個例子,只是為了把它全部弄完。 假設你有文件file1.ccfile2.cc ,並有一個main()函數file1.cc 然后你可以像這樣創建機器代碼:

g++ file1.cc -c
g++ file2.cc -c

這將導致有兩個新文件,file1.o 和 file2.o。

接下來,您可以像這樣鏈接它們:

g++ file1.o file2.o -o file.exe

這將生成file.exe ,您可以運行的最終可執行文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM