【问题标题】:Codeblocks on linux mint Process terminated with status -1linux mint进程上的代码块以状态-1终止
【发布时间】:2020-03-06 08:31:39
【问题描述】:
所以我刚刚在 Lnux mint 19 上安装了代码块,但我遇到了问题。
我运行了通常的 hello world 程序,但得到“进程以状态 -1 终止”。 “构建”部分有效,但是当我点击“运行”时,我得到了那个错误。我已安装 g++ 并将其设置为默认编译器。有什么想法吗?
尝试了我在互联网上可以找到的所有内容。添加了代表,尝试从软件中心和终端安装,结果相同。
int main()
{
cout << "Hello world!" << endl;
return 0;
}
进程以状态 -1 终止
【问题讨论】:
标签:
c++
linux
codeblocks
linux-mint
【解决方案1】:
您的默认 Linux 终端似乎与调用 C 函数不兼容。尝试在主终端另外安装一个普通的 xterm:
$ sudo apt install xterm
现在尝试运行您的代码。
如果没有帮助,您还可以尝试更改代码块中的默认终端:转到设置 > 环境 > 常规设置,例如将终端更改为“gnome-terminal”。
如果失败,实际的 X 显示错误将有助于进一步排除故障:
$ tail -f ~/.xsession-errors
现在尝试运行您的代码并检查您的终端是否有最新的 xsession 错误。最有可能的是,它会以“错误设置文件元数据:”开始,您可能会在此处找到完整的错误消息。
【解决方案2】:
据我所知,从您发布的最少量代码来看,您缺少包含。
如果你没有丢失包含,你就不会告诉你的编译器 cout 和 endl 在哪里。
您的代码应该如下所示:
#include <iostream>
int main() {
using std::cout;
using std::endl;
cout << "Hello, World!" << endl;
return 0;
}
这里有一个简短的解释。
#include <iostream> 告诉预处理器将此头文件加载到您的翻译单元(CPP 文件)中,以便您拥有使用不同对象、函数和 STL 的其他成员所需的所有前向声明。
using std::cout && using std::endl
这两段代码具体告诉编译器您希望使用 std 命名空间的哪些成员。
我建议使用这种方法(即使它看起来很乏味),而不是using namespace std;。
通过using 整个命名空间,在这种情况下,您正在污染您的全局命名空间。
请参阅this question 了解更多示例,了解为何应避免使用using namespace。