程序未运行。如何修复(我使用C-Free 4.0) ? g ++。exe:无法使用-c或-S以及多个编译版本指定-o
答案 0 :(得分:0)
您可以包含正在使用的整个构建命令吗?我的猜测是,您正在尝试通过单个命令(例如g++ file1.cc file2.cc file3.cc -o file.exe
)将多个文件编译成可执行文件,但是在编译命令中也有一个-c
标志。
作为参考,通常在编译时会发生两件事。首先,源代码变成了机器代码。其次,将机器代码链接起来以生成可执行文件。
在gcc / g ++中,您可以使用-c
标志将一个源文件编译成机器代码。您可以使用-o
标志将一个(或多个)机器代码文件链接到一个可执行文件中。有一个简写形式,您可以使用-o
标志一步一步地编译和链接所有对象(但这通常不是一个好主意,因为对任何文件的任何更改都需要您重新编译一切)
对于-S
,这是当您要从源代码生成汇编代码时使用的。我猜那不是你在做什么。
这里是一个例子,只是将其四舍五入。假设您有文件file1.cc
和file2.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
,这是您可以运行的最终可执行文件。