Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making a Ubuntu executable

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?

like image 801
sfactor Avatar asked Apr 22 '10 13:04

sfactor


People also ask

What is a Ubuntu executable?

In Ubuntu you don't have a specific extension for an executable file. These are generally files that are named after the application they relate too. The important factor is that these files have the executable bit set. If you have a color terminal you will notice that these are a different color when listed using ls .


1 Answers

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.bin file 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 produced foo.png, and a good place for it might be /usr/local/share/icons/.

Now you need to create foo.desktop that might look like this:

[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

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 *.deb package. (with your executable, *.desktop file 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.

like image 175
Chen Levy Avatar answered Sep 29 '22 08:09

Chen Levy