我使用gcc编译器在C中创build了一个程序。 现在它没有GUI组件。 我正在使用makefile编译它并在terminal中运行它。 我需要部署它,以便可执行文件是独立的。 我想要可执行文件有一个图标,点击时在terminal启动程序。 谁能告诉我如何做到这一点?
(免责声明:以下是使用kubuntu进行测试,您可能需要对系统进行一些调整)
其实有一个标准来做到这一点,不仅仅是Ubuntu而且是任何数量的nix系统。 请参阅: http : //www.freedesktop.org/wiki/Howto_desktop_files :
让我们假设你有你想要部署的foo.bin
文件。 根据文件系统层次结构标准 ,放置它(如果你不使用包管理器的话)是/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/
。
波特兰项目提供了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 。
陈的链接获取桌面图标和菜单条目; 对于特别是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命令,它们都是为了兼容性而实现的。