g++ 编译的应用程序不起作用

g++ 编译的应用程序不起作用

我用 C++ 编写了一个模拟代码,并使用 将其编译成可执行文件g++。但是,双击输出文件时没有任何反应。我也选中了“允许文件用作可执行文件”,但仍然没有任何反应。我应该尝试其他方法吗?还是出了什么问题?

编辑:尽管我之前删除了 WINE,但它仍设置为作为 WINE 应用程序运行apt-get purge。这可能是问题所在吗?也许我应该尝试使用其他程序来运行它。它实际上应该设置为默认值吗?

编辑2:我使用以下命令执行编译:

$ sudo g++ -o main main.cpp

它是一个没有 GUI 的简单命令行应用程序。

答案1

如果您的应用程序没有 GUI(IE 仅提供控制台输出),您将看不到任何内容,因为双击文件管理器中的可执行文件时不会打开终端。但是,您的应用程序应该在后台运行。

您可以通过以下方式从现有 shell 运行可执行文件./path/to/executable

第二个更复杂的选项是创建一个桌面文件,从文件 ex 启动应用程序并将其设置为显示终端输出。

假设我有一个非常简单的应用程序,例如

#include <iostream>
#include <stdlib.h>
int main() {
    std::cout << "hello bob" << std::endl;
    system("read moo"); // pause for input at the end.
    return 0;
}

我对其进行了编译,g++ foo.cpp默认情况下输出一个a.out文件。

然后只需创建一个foo.desktop包含

[Desktop Entry]
Type=Application
Name=Awesome App
Terminal=true
Exec=/path/to/a.out

然后可以将其设置为可执行文件,然后从文件导航器中双击并查看终端输出。这就是应用程序快捷方式在菜单中构建的方式,以及它们如何获得友好的名称和图标。

答案2

尝试在终端中运行它。如果它是一个命令行程序,那么在文件管理器中双击可执行文件将无法执行很多操作。在终端中运行以下命令:

cd /path/to/directory

/path/to/directory用二进制文件所在目录的路径替换;

sudo chmod +x binaryName

确保您的二进制文件是可执行的(用其名称替换 binaryName);

./binaryName

去执行它。

相关内容