为什么我似乎无法通过双击打开在 C++ 上创建的可执行文件。
我有一个从 IDE 运行的文件,我想知道是否有办法将该文件设置为在单击它时打开终端,就像 Windows 上的 .exe 文件一样。
可能性:
我可以添加到我的源代码中的 C++ 代码将允许这样做。
配置我的电脑以打开它。
我正在尽量避免使用工具包我最近在 Windows 上编译了一个应用程序(感谢我的堂兄,他有一台装有 Windows 的 PC)
如果可以在 Linux 上的 Windows 上做同样的事情那就太好了,因为我们有 2 个版本的文件夹。
我希望这个简单的基于终端的应用程序无需成为专家即可运行。
我添加了这一行:
系统(“侏儒终端”);
它在终端上打开但只显示文件路径而不是实际程序有什么建议吗?
我希望您需要在 Linux C++ 编译器输出的文件上设置“可执行”位,出于安全原因,我认为默认情况下不会这样做。
只需“cd”到您生成的可执行文件所在的目录
chmod +x myexecutable
Run Code Online (Sandbox Code Playgroud)
用编译器输出的名称替换“myexecutable”。
然后尝试使用 ./myexecutable 运行它
我相信这也应该使程序使用鼠标单击和控制台“可运行”。
同样,如果您需要运行命令的“脚本”,您可以在脚本文件中尝试以下操作,将其保存为“myexe.sh”或类似内容:
#!/bin/sh
command1
command2
Run Code Online (Sandbox Code Playgroud)
然后再次使用
chmod +x myexe.sh
Run Code Online (Sandbox Code Playgroud)
使其可以通过单击它来运行脚本。
我认为你问题的根源在于你并没有真正理解终端仿真器和 Shell 之间的区别以及 Linux 如何确定如何启动进程。
首先,有“终端模拟器”,在基于 Gnome 的环境中,这通常是 Gnome 终端。
然后是“Shell”,在 Linux 中这通常是 bash,尽管其他 shell 也是可能的。
“Shell”在“终端模拟器”内运行。这种区别来自物理终端时代,物理终端是接受输入、以颜色写入文本等的硬件,而 Shell 是处理用户命令并根据给定命令管理其他进程的软件。
如今,我们有了可以显示任何图像的通用屏幕,因此我们不再使用物理终端,而是使用“终端模拟器”(一种模拟物理终端工作的软件)和 Shell(仍然是与以前相同的 ole' shell(嗯,现代 shell 确实利用了软件终端仿真器的优势,例如不受纸张物理限制等的限制,但鸿沟仍然存在)。
“Shell”并不总是在终端仿真器内运行;还有Graphical Shell,例如Nautilus(提示提示,Nautilus是一种有大壳的海洋生物的名字)或Windows Explorer(不要与Internet Explorer混淆)。
在命令行 shell(例如 bash)和图形 shell(例如 Nautilus)中,可执行文件通过execute设置其位来标记。
在命令行shell中,您可以使用ls -l查看文件的权限位,例如rwxrwxrwx表示每个人都可以读/写/执行该程序;rwxr-xr--表示所有者拥有完全权限,该文件所在组的人可以读取和执行但不能写入,其他人只能读取该文件。在 Nautilus 中,您可以右键单击文件 > 属性 > 权限选项卡。在“权限属性”页面中,您可以像在命令行 shell 中一样设置文件的权限。
设置了执行位的文件被视为可执行文件,可以通过执行 ./filename(命令行 shell)或双击(图形 shell)来执行。
最后,关于 shell 如何执行文件还有一些其他微妙之处。在大多数 Linux shell 中,您可以“执行”用 python/perl/php/bash 编写的脚本,该脚本不是已编译的可执行文件。由于这些文件不是本机编译的可执行文件,因此它们需要解释器(例如python解释器)才能执行。与 Windows shell(资源管理器)不同,Windows shell 通过文件扩展名确定要调用的解释器;Linux shell 通过查看如下所示的“hashbang”行来找出正确的解释器
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
当设置文件的执行位并且文件具有此 hashbang 行时,shell 将以当前文件作为参数调用解释器 /usr/bin/python 。
Nautilus 还可以识别程序何时是命令行应用程序,并让您在终端内运行该应用程序。当您双击可执行脚本时,Nautilus 会询问您是要在终端中运行它、不使用终端运行还是在文本编辑器中编辑文件。
小智 0
如果您在 Windows 上编译了它并且它是一个 exe,那么当您双击可执行文件时,我认为没有理由不能在 Windows 上打开终端。您确定代码不会关闭(段错误等)吗?确保程序不会崩溃是个好主意。
| 归档时间: |
|
| 查看次数: |
22611 次 |
| 最近记录: |