Changes

Building and Installing GNUstep on Linux

5,036 bytes added, 19:35, 18 September 2009
no edit summary
In [[Installing and Using GNUstep and Objective-C on Linux]], we covered the steps involved in installing the GNUstep environment on Linux distributions for which pre-built GNUstep packages are available. Unfortunately, very few Linux distributions have pre-hbuilt built packages available making it necessary download and build the GNUstep sourceson most systems.
The purpose of this chapter of [[Objective-C 2.0 Essentials]] is to outline the steps necessary to download and build the GNUstep sources. The process outlined here is known to work on Fedora, Red Hat Enterprise Linux and CentOS. The steps should be largely similar for other Linux distributions, though the exact command to perform package installations may differ from the one used here. For details on how to install specific packages for your chosen Linux distribution it may be necessary to refer to the corresponding documentation.
== Configuring the Build Process ==
Before the build process can be startedit must first be configured. This is an automated process that scans the system on which the build is to take place to find out about the packages that are installed and then creates a build configuration file. This configuration is performed in by executing the following command in the GNUstep directory created in the previous section of this chapter: <pre>./configure</pre> == Building GNUstep == Once the configuration script process is complete it is time to begin the GNUstep build. This is achieved by typing the following command: <pre>make</pre> Once executed, the build process will display an opening message similar to the following: <pre>GNUstep Installation   This is an automatic installation script for GNUstep. This script tries to build and install the core libraries forGNUstep. Log files of the build process are kept so that if somepart of the build does not work, you can send the log files toour attention (at [email protected]). From these we can try todetermine what the problem is.  Press the Return key to begin continue:</pre> Press any key to continue to the system check phase. At the end of this phase a list of errors and warnings may appear. Any errors will prevent the build from completing and should be addressed before proceeding. These typically involve installation of missing packages. Warnings can usually be ignored without impacting the subsequent build process.  Having reviewed the information provided, press any key to return to the build. The duration of the build will depend on the speed of the system but will usually be completed within a few minutes and display a message containing information some useful information: <pre>--------------------------------------------------------- Installation Finished --------------------------------------------------------- Now run the GNUstep initialization script (put this in your.bashrc or other type of startup script). Note the '.' at thebeginning of the line.. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh Now you can install some applications and start using GNUstepLook for a few applications in the AppSources directory. Thetypical way to install an application is: tar -zxf MyApplication.tar.gz cd MyApplication make make install (as root, unless GNUstep is in your home dir) Then start the application: openapp MyApplication.app</pre> Perhaps the most important piece of information in the above output is the reference to the ''GNUstep initialization script''. This must be run prior to compiling any Objective-C applications and can be placed in the .bashrc startup script in your home directory. Make a note of the location listed in the message on your screen as the exact location may differ from the one shown above. == Testing the Objective-C and GNUstep Installation == 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: <pre>#import <Foundation/Foundation.h> int main (int argc, const char * argv[]){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  NSLog (@"hello world"); [pool drain]; return 0;}</pre> Objective-C source files have a ''.m'' file name extension, so save the file as ''hello.m'' in a suitable folder such that you will be able to locate the file in the next section. == Compiling Objective-C Code == Before an Objective-C program can be run it must first be compiled. Compilation 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 environment must first be set up by executing the ''GNUstep.sh'', the location of was provided at the end of the installation process. Execute this script exactly as outlined in the installation message, for example: <pre>. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh</pre> 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: <pre>error: cannot find interface declaration for ‘NXConstantString’</pre> 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. The program may be executed as follows: <pre>./hello</pre> Executing the program will result in output similar to the following: <pre>2009-09-15 10:48:39.772 prog1[12906] hello world</pre> Assuming you see output similar to the above example, Objective-C and GNUstep are successfully installed on your Linux system and you are ready to continue with the remainder of this book.