C++编译困惑

标签 c++ compiler-construction terminal cmd console-application

我最近开始通过 cplusplus.com 教程学习 C++。 虽然我想尝试编译一个打印出“Hello World”的简单代码; 它在 Linux 上工作正常,但我必须通过控制台打开它才能工作,即使我将它设置为“可执行文件”,我也不能简单地双击它。 我真的不在乎,因为 Linux 什么时候这么容易了。但后来我想用 C++ 为 Windows 制作一个应用程序,一个简单的 Hello World 控制台应用程序。 问题是,如果我编译一个文件,我必须通过 Windows 控制台访问它才能工作,但我不希望这样。

1- 如何让代码自动打开 CMD 并运行?

2- 我需要在 Windows 中单独编译代码吗? 或者我可以通过 G++ 编译器在 Linux 中编译它吗?

3-请向我解释编译的基本思路以及如何使代码在控制台/终端中自动运行。

此致,RonnyM

最佳答案

如果我正确理解你的问题,我可以回答你的一些问题。我想我可以评论你的问题,但我不知道怎么评论,所以我在这里回答你。

  1. 有时人们会创建批处理文件来按顺序执行一堆命令。

  2. 是的,你必须单独编译。可执行文件在Windows下是PE(Portable Executable),在ELF(Executable Linkable Format)下,编译器在不同的OS下生成不同格式的可执行文件。链接库也有一些不同,不同的系统有不同的库,所以编译器知道要使用哪些。有时你可以转换不同格式的可执行文件,你可以谷歌“PE VS ELF”,你会得到很多关于这些的东西。

  3. 编译是将您的代码转换为二进制文件的过程,该文件可以在您的硬件上执行。你是什​​么意思自动运行?你的意思是二进制文件如何开始执行?

关于C++编译困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126802/

相关文章:

c++ - 运算符<有什么用?

compiler-construction - 不安全的强制和更高效的 Agda 代码 (-ftrust-me-im-agda)

linux - 向 aspell 添加许多词典

linux - 如何设置 Vim 为终端的十六色?

c++ - 是否有可能制作一个运行注入(inject)代码并返回与注入(inject)函数相同的数据的函数包装器?

c++ - 'std::hash<unsigned long>' 上的 Clang 编译错误

java - 编译缺少代码部分的 Java 类

compiler-construction - Web Essentials LESS Compiler 不提供错误消息

shell - 在终端/shell 中读取光标位置的内容

c++ - 在 Eclipse 中向 'link' 命令添加引号