Installing and Using GNUstep and Objective-C on Linux

From Techotopia
Revision as of 15:00, 15 September 2009 by Neil (Talk | contribs) (New page: One of the great things about Linux is the shear number of different distributions available to choose from. This is the result of a vibrant community of dedicated developers who believe p...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

One of the great things about Linux is the shear number of different distributions available to choose from. This is the result of a vibrant community of dedicated developers who believe passionately about this powerful and flexible operating system. It also gives the end user the opportunity to find a Linux distrution that best suits their needs (and, perhaps, just a few headaches during the decision process).

Unfortunately, this diversity can prove to be a considerable obstacle to an author of a book trying to write a chapter on how to install a particular software package on Linux. As such, a detailed overview of how to get GNUstep (which includes Objective-C) installed and running on all the current Linux distributions is beyond the scope of this book. Instead, this chapter will look at one distribution for which pre-built packages are available (Ubuntu Linux) and then provide an overview of how to build GNUstep from sources on platforms for which pre-built packages are not available.

Installing GNUstep on Ubuntu

Objective-C is provided as part of the GNUstep environment so in order to be able to use Objective-C it is necessary to install GNUstep. Fortunately for Ubuntu users, all the GNUstep packages are available and ready to install from the Ubuntu repositories. To install GNUstep, therefore, open a Terminal window on your Ubuntu desktop (Applications->Accessories->Terminal) and enter the following command (together with your password when prompted):

sudo apt-get install gnustep

The apt-get utility will gather together a list of all the packages required for a successful GNUstep runtime installation and ask for confirmation that the installation is to proceed. Once confirmation is provided, the packages will be downloaded and installed onto the system.

The next step is to install the GNUstep development packages. This is achieved using the following command:

sudo apt-get install gnustep-devel

Once again apt-get will list the packages required and seek confirmation before performing the installation process.

Once the installation is complete, it can be tested by opening your favorite editor (if you don't have a favorite try GEdit by selecting Applications->Accessories->Text Editor) and entering some Objective-C code:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

        NSLog (@"hello world");
        [pool drain];
        return 0;
}

Objective-C source files have a .m file name extension, so save the file as hello.m.


Compiling Objective-C Code

Before an Objective-C program can be run it must first be compiled. Complication is a process whereby the human readable Objective-C code in the source file (in our case hello.m) is converted to the machine code understood by the CPU. Prior to performing this compilation, however, the GNUstep enviroment must first be set up. Thankfully, a shell script is provided to perform this task for us and may be executed as follows:

. /usr/share/GNUstep/Makefiles/GNUstep.sh

Note that this setup script will need to be executed each time you start a new Terminal window with the intention of compiling Objective-C. For this reason, you may find it advantageous to add it to the .bashrc file in your home directory so that it gets executed automatically. Failure to execute this script prior to compiling Objective-C code in a Terminal window will result in the compiler reporting errors similar to the following:

error: cannot find interface declaration for ‘NXConstantString’


From within a Terminal window change directory to the where you saved the hello.m source file and execute the following command to compile it:

gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello

If all goes well, the compilation should complete silently and the test application is ready to run. If, on the other hand, you see an error message similar to the following then an additional package needs to be installed on your system:

gcc: error trying to exec 'cc1obj': execvp: No such file or directory

The missing package is called gobjc and may be installed from a Terminal window using the following command:

sudo apt-get install gobjc

Once the installation is complete, attempt to compile the test application again. Assuming a successful compilation is achieved, the program may be executed as follows:

./hello

Executing the program will result in output similar to the following:

2009-09-15 10:48:39.772 prog1[12906] hello world