我使用 gcc 编译器用 C 语言编写了一个程序。现在它没有 GUI 组件。我正在用 makefile 编译它并在终端中运行它。我需要部署它,以便可执行文件是独立的。我希望可执行文件有一个图标,并在单击时在终端中启动程序。谁能告诉我该怎么做?
2 回答
基础
(免责声明:以下是用 kubuntu 测试的,您可能需要对您的系统进行一些调整)
实际上有一个标准可以做到这一点,不仅适用于 Ubuntu,而且适用于任意数量的 *nix 系统。咨询:http ://www.freedesktop.org/wiki/Howto_desktop_files :
假设您有foo.bin
要部署的文件。根据Filesystem Hierarchy Standard,放置它的好地方(如果您不使用包管理器)是/usr/local/bin/
. 您还需要一个图标,我会假设您的艺术才能已经产生foo.png
,并且可能是一个好地方/usr/local/share/icons/
。
现在您需要创建foo.desktop
如下所示的内容:
[Desktop Entry]
Comment=My awesome fooish application
Exec=/usr/local/bin/foo.bin
Icon=/usr/local/share/icons/foo.png
Name=Foobar
NoDisplay=false
StartupNotify=false
Terminal=1
TerminalOptions=
Type=Application
并将其放入/usr/share/applications/
.
您也许可以使用您的菜单编辑器来创建这样的文件。在 .下查找生成的桌面文件~/.local/share/applications/
。
这应该可以解决问题。
另一个约定是将所有内容放在下面/opt/foo/
并创建指向/usr/local/
.
与波特兰交叉 DE
Portland 项目提供了xdg-*
命令行实用程序,可以轻松地以独立于 DE(GNOME、KDE 等)的方式安装应用程序的图标/菜单项/资源文件。
请参阅 linuxuser.co.uk 上的KDE 和 GNOME 跨桌面开发教程。
更好的方法
对于部署,您应该考虑创建一个*.deb
包。(带有您的可执行文件、*.desktop
文件和图标)。有几个关于这个主题的教程,例如http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/How-to-make-deb-packages/。
请注意,如果您使用的是包管理器,则文件位置的约定将/usr/
变为/usr/local/
.
一路走好
如果您愿意,下一步是设置您自己的存储库或PPA。
Chen的链接获取桌面图标和菜单项;特别是对于 Ubuntu(实际上是任何 Debian 派生系统,在大多数情况下),有很多很好的文档。可从以下链接开始:https ://wiki.ubuntu.com/Packaging?highlight=%28CategoryPackaging%24%29
从“PackagingGuide”开始阅读。:)
至于在 X 下的终端中运行您的应用程序 - 在 Ubuntu 上 - 只需运行
x-terminal-emulator -e /path/to/your/command
该x-terminal-emulator
命令由“update-alternatives”管理,将成为系统上任何首选 xterm 仿真器的符号链接。对于 Kubuntu 系统,它通常是 kterm,对于常规 Ubuntu 系统,它可能是 gnome-terminal 等。但是如果安装了 X,您可以指望 x-terminal-emulator 可用。而且该-e
选项适用于所有这些,因为它是一个 xterm 命令,它们都实现了兼容性。