如何修复错误:g ++。exe:无法使用-c或-S和多个编译指定-o

时间:2019-01-18 01:21:50

标签: c++ c

程序未运行。如何修复(我使用C-Free 4.0) ? g ++。exe:无法使用-c或-S以及多个编译版本指定-o

1 个答案:

答案 0 :(得分:0)

您可以包含正在使用的整个构建命令吗?我的猜测是,您正在尝试通过单个命令(例如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,这是您可以运行的最终可执行文件。