i have made a program in C using the gcc compiler. Right now it has no GUI components. I am compiling it with makefile and running it in the terminal. I need to deploy it so that the executable is standalone. I want the executable to have an icon and when clicked start the program in the terminal. Can anyone tell me how to do this?
Share
The basics
(disclaimer: the following was tested with kubuntu, you might need to make some adjustments for your system)
Actually there is a standard to do that, not just for Ubuntu but for any number of *nix systems. Consult: http://www.freedesktop.org/wiki/Howto_desktop_files:
Lets assume you have your
foo.binfile you want to deploy. According to the Filesystem Hierarchy Standard, a good place to put it (if you are not using a package manager) is/usr/local/bin/. You will also need an icon, I will assume your artistic talent producedfoo.png, and a good place for it might be/usr/local/share/icons/.Now you need to create
foo.desktopthat might look like this:and put it in
/usr/share/applications/.You might be able to use your menu editor to create such a file. Look for the generated desktop file under
~/.local/share/applications/.This should do the trick.
Another convention is to put everything under
/opt/foo/and create symbolic links to/usr/local/.Cross DE with Portland
The Portland project provides the
xdg-*command line utilities that make it easy to install the application’s icon / menu entry / resource file, in a DE (GNOME, KDE, etc) independent way.See the KDE & GNOME cross-desktop development tutorial on linuxuser.co.uk.
A better way
For deployment you should consider creating a
*.debpackage. (with your executable,*.desktopfile and icon). There are several tutorials on this subject e.g. http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/How-to-make-deb-packages/.Note that if you are using a package manager, the convention for file location becomes
/usr/instead of/usr/local/.Go all the way
The next step, if you are inclined to take it, is setup your own repository, or PPA.