![从 ubuntu 浏览器编译并运行 C++ 可执行文件](https://linux22.com/image/991996/%E4%BB%8E%20ubuntu%20%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%96%E8%AF%91%E5%B9%B6%E8%BF%90%E8%A1%8C%20C%2B%2B%20%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6.png)
我有一个问题,我可以从 Ubuntu 运行 Linux 可执行文件吗(不是从 Linux 命令行)?我在命令行中创建了一个文件 demo.c”,然后将其编译(然后修复错误,然后再次编译)为可执行文件“demo”。它编译、运行并从命令行给出正确的结果。我执行了 chmod +x 只是为了确保我拥有正确的权限。我返回 Ubuntu,转到文件和文件夹、文档、主页、“demo”、属性、权限,并确保选中了“允许”框。然后返回主页,右键单击“demo”并单击运行。没有成功。我检查了命令行,看看它是否可能在那里运行过。还是没有成功。如果有人可以告诉我如何在 Ubuntu 中运行可执行文件,我现在有另一个问题。我的下一个问题是,如果我可以从 Ubuntu 运行,我是否也可以在 Ubuntu 内部编译?感谢您的时间和麻烦。mbsailor
答案1
除非您的程序调用某种 GUI 弹出窗口,否则它将尝试打印到终端。程序通常期望存在stdout
(输出流)。因此,您的命令运行正常,Nautilus 浏览器调用 shell 来启动您的程序,但该程序无处可打印。
Run as
您可能会遇到在菜单中创建自定义条目的麻烦,或者这里有一个更简单的解决方案:
打开文本编辑器并制作此文件~/.local/share/applications/run_executable.desktop
(笔记~ 表示您的/home/username
目录,.local
是隐藏文件夹),内容如下:
[Desktop Entry]
Type=Application
Name=RunExecs
Exec=gnome-terminal -e 'bash -c "%u; read"'
Terminal=true
现在打开文件管理器,并将新文件拖到启动器。启动器上有此图标后,您只需拖放已编译的 C 代码,它就会打开gnome-terminal
并运行它。我在 Ubuntu 16.04 中也有同样的设置,到目前为止没有检测到任何问题。
您可以尝试将该文件作为右键单击选项添加到文件管理器,如下所示这文章,但它可能有点过时了,我个人从来没有测试过它,所以不能推荐或不推荐
编辑
我昨天还从Jacob Vlijm 的回答是您可以向 nautilus 添加自定义脚本。例如,创建/home/user/.local/share/nautilus/scripts/run_executable.sh
包含以下内容的文件:
#!/bin/bash
FILE=$(readlink -e "$@")
echo "$FILE"
if [ -n "$FILE" ] ; then
gnome-terminal -x bash -c '"$@";read' bash $FILE
fi
确保它具有可执行权限,方法是执行chmod +x ~/.local/share/nautilus/scripts/run_executable.sh
并重新启动 nautilus(如果需要)。之后,您只需右键单击任何可执行文件,就会出现scripts -> run_executable.sh
选项。
笔记这个问题问的是编译和运行。我不会讨论编译,因为编译通常需要手动向编译器提供选项,例如在需要链接库的情况下。如果用户愿意,他们可以修改我的脚本,但我建议不要添加编译选项,只使用运行选项