我输入了 g++ -o main.cpp main 并且我丢失了我的程序 [关闭]

Posted

技术标签:

【中文标题】我输入了 g++ -o main.cpp main 并且我丢失了我的程序 [关闭]【英文标题】:I typed g++ -o main.cpp main and I lost my program [closed] 【发布时间】:2018-11-25 22:51:46 【问题描述】:

我刚刚在控制台中写入了以下内容:

g++ -o main.cpp main

我的main.cpp 不见了。

我刚刚失去了 3 个小时的工作吗?

【问题讨论】:

试试g++ --helpman g++ 一句话,“是的”。从中学到什么 - 使用 git 或 mercurial 等版本控制系统,并在您编写的每几条语句中提交它。 你了解过cmd文件吗?也许您的第一个 cmd 文件可能总是会制作备份副本。然后当你看到你的 cmd 错误时......有一天,你会想尝试 make,它的学习曲线更陡峭。第 1 步 - 输入一个可执行的 cmd 文件(可能是 build?),它运行 g++ 命令来编译 helloWorld.cpp。如果它在不覆盖您的输入的情况下工作,请继续执行第 2 步。 【参考方案1】:

是的,你做到了。 -o 标志指定输出文件(在您的情况下为main.cpp,因为这是紧随其后的文件名):

g++ -o main.cpp main
    \_________/ \__/
              \    \_This is the input file.
               \_____This specifies the output file.

换句话说,您已经告诉编译器尝试编译通常是您的可执行文件,并将结果写入您的源文件(覆盖它)。更合适的命令是:

g++ -o main main.cpp

这是开发人员不时经历的那些教育时刻之一(包括像我这样的老黑客),应该说服你定期提交到 git(或其他源代码控制系统),或使用构建系统而不是复杂的命令行来编译代码。

【讨论】:

我明白这里发生了什么 - 我不明白你的解释。 还有为什么不手动输入命令,而是将它们放在 makefile 或其他构建脚本中。 @o11c:命令越复杂,出错的可能性就越大。对比 gcc -std=c11 -O2 -funsigned-bitfields -fallow-single-precision -fgimple -c -o prog.o prog.cmake :-) 显然,您仍然必须在 第一次 时间(在配置构建系统时)将其做好,但是一旦完成,您通常不需要再次担心它。

以上是关于我输入了 g++ -o main.cpp main 并且我丢失了我的程序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

命令行输入c ++ [重复]

windows (g++) 上的 c++ 程序。 main() 没有启动

使用 Makefile 对 main 的多个定义

CPP - 编译错误 (G++)

Makefile入门

使用gcc命令编译多个文件