8

我使用 gcc 编译器用 C 语言编写了一个程序。现在它没有 GUI 组件。我正在用 makefile 编译它并在终端中运行它。我需要部署它,以便可执行文件是独立的。我希望可执行文件有一个图标,并在单击时在终端中启动程序。谁能告诉我该怎么做?

4

2 回答 2

9

基础

(免责声明:以下是用 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

于 2010-04-22T13:43:00.537 回答
5

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 命令,它们都实现了兼容性。

于 2010-04-22T13:51:35.127 回答