我使用gcc编译器在C中创建了一个程序。现在它没有GUI组件。我用makefile编译它并在终端中运行它。我需要部署它,以便可执行文件是独立的。我希望可执行文件有一个图标,单击时启动终端中的程序。谁能告诉我怎么做?
答案 0 :(得分:9)
(免责声明:以下是使用kubuntu进行测试的,您可能需要对系统进行一些调整)
实际上有一个标准可以做到这一点,不仅适用于Ubuntu,还适用于任何数量的* nix系统。咨询:http://www.freedesktop.org/wiki/Howto_desktop_files:
假设您有要部署的foo.bin
文件。根据{{3}},放置它的好地方(如果你没有使用包管理器)是/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/
的符号链接。
Filesystem Hierarchy Standard提供了xdg-*
命令行实用程序,可以轻松地以DE(GNOME,KDE等)的方式安装应用程序的图标/菜单项/资源文件。
请参阅linuxuser.co.uk上的Portland project。
对于部署,您应该考虑创建一个*.deb
包。 (使用您的可执行文件,*.desktop
文件和图标)。关于这个主题有几个教程,例如KDE & GNOME cross-desktop development tutorial
请注意,如果您使用的是包管理器,则文件位置约定将变为/usr/
而不是/usr/local/
。
下一步,如果您愿意接受它,请设置您自己的存储库,或http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/How-to-make-deb-packages/。
答案 1 :(得分:5)
陈的链接获取桌面图标和菜单条目;对于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命令,它们都是为兼容性而实现的。