Compiling Objective-C project on Linux (Ubuntu)
        Posted  
        
            by Alex
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Alex
        
        
        
        Published on 2009-10-13T06:20:05Z
        Indexed on 
            2010/06/01
            22:13 UTC
        
        
        Read the original article
        Hit count: 351
        
How to make an Objective-C project work on Ubuntu?
My files are:
Fraction.h
    #import <Foundation/NSObject.h>
    @interface Fraction: NSObject {
        int numerator;
        int denominator;
    }
    -(void) print;
    -(void) setNumerator: (int) n;
    -(void) setDenominator: (int) d;
    -(int) numerator;
    -(int) denominator;
    @end
Fraction.m
    #import "Fraction.h"
    #import <stdio.h>
    @implementation Fraction
    -(void) print {
        printf( "%i/%i", numerator, denominator );
    }
    -(void) setNumerator: (int) n {
        numerator = n;
    }
    -(void) setDenominator: (int) d {
        denominator = d;
    }
    -(int) denominator {
        return denominator;
    }
    -(int) numerator {
        return numerator;
    }
    @end
main.m
    #import <stdio.h>
    #import "Fraction.h"
    int main( int argc, const char *argv[] ) {
        // create a new instance
        Fraction *frac = [[Fraction alloc] init];
        // set the values
        [frac setNumerator: 1];
        [frac setDenominator: 3];
        // print it
        printf( "The fraction is: " );
        [frac print];
        printf( "\n" );
        // free memory
        [frac release];
        return 0;
    }
I've tried two approaches to compile it:
- Pure gcc: - $ sudo apt-get install gobjc gnustep gnustep-devel $ gcc `gnustep-config --objc-flags` -o main main.m -lobjc -lgnustep-base /tmp/ccIQKhfH.o:(.data.rel+0x0): undefined reference to `__objc_class_name_Fraction'
- I created a GNUmakefile Makefile: - include ${GNUSTEP_MAKEFILES}/common.make TOOL_NAME = main main_OBJC_FILES = main.m include ${GNUSTEP_MAKEFILES}/tool.make- ... and ran: - $ source /usr/share/GNUstep/Makefiles/GNUstep.sh $ make Making all for tool main... Linking tool main ... ./obj/main.o:(.data.rel+0x0): undefined reference to `__objc_class_name_Fraction'
So in both cases compiler gets stuck at
    undefined reference to `__objc_class_name_Fraction'
Do you have and idea how to resolve this issue?
© Stack Overflow or respective owner