2010-10-14 3 views
0

J'essaye de compiler l'exemple suivant de http://www.otierney.net/objective-c.html. Il se compose de trois fichiers:Compilation de l'objectif c sous Linux

Fraction.h

#import <Foundation/NSObject.h> 

@interface Fraction: NSObject { 
     int numerator; 
     int denominator; 
} 

-(void) print; 
-(void) setNumerator; 
-(void) setDenominator; 
-(int) numerator; 
-(int) denominator; 
@end 

Fraction.m

#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, 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"); 

    //Frac memory 
    [frac release]; 
    return 0; 
} 

à l'aide suivante pour compiler

$ gcc `gnustep-config --objc-flags` -lobjc -lgnustep-base main.m -o main 

Cela produit un fichier main.d, qui est juste ascii

$ cat main.d 

main: main.m Fraction.h /usr/include/GNUstep/Foundation/NSObject.h \ 
/usr/include/GNUstep/Foundation/NSObjCRuntime.h \ 
/usr/include/GNUstep/GNUstepBase/GSVersionMacros.h \ 
/usr/include/GNUstep/GNUstepBase/GSConfig.h \ 
/usr/include/GNUstep/GNUstepBase/preface.h \ 
/usr/include/GNUstep/GNUstepBase/GSObjCRuntime.h \ 
/usr/include/GNUstep/ObjectiveC2/runtime.h \ 
/usr/include/GNUstep/ObjectiveC2/Availability.h \ 
/usr/include/GNUstep/Foundation/NSZone.h \ 
/usr/include/GNUstep/GNUstepBase/GNUstep.h \ 
/usr/include/GNUstep/Foundation/NSDate.h \ 
/usr/include/GNUstep/GNUstepBase/NSObject+GNUstepBase.h 

Fraction.h: 

/usr/include/GNUstep/Foundation/NSObject.h: 

/usr/include/GNUstep/Foundation/NSObjCRuntime.h: 

/usr/include/GNUstep/GNUstepBase/GSVersionMacros.h: 

/usr/include/GNUstep/GNUstepBase/GSConfig.h: 

/usr/include/GNUstep/GNUstepBase/preface.h: 

/usr/include/GNUstep/GNUstepBase/GSObjCRuntime.h: 

/usr/include/GNUstep/ObjectiveC2/runtime.h: 

/usr/include/GNUstep/ObjectiveC2/Availability.h: 

/usr/include/GNUstep/Foundation/NSZone.h: 

/usr/include/GNUstep/GNUstepBase/GNUstep.h: 

/usr/include/GNUstep/Foundation/NSDate.h: 

/usr/include/GNUstep/GNUstepBase/NSObject+GNUstepBase.h: 
+0

S'il vous plaît reformater. Il y a des instructions disponibles en cliquant sur la grosse orange? juste au-dessus de la fenêtre d'édition. – Jonathan

+0

Quelle est la question? – mathk

Répondre

1

J'ai une réponse pour vous. Voici ce que vous avez besoin:
1. Configuration GNUstep comme sur ce site: http://camelek.wikidot.com/wprowadzenie-do-objective-c
2. Créer GNUmakefile avec ce contenu:

include $(GNUSTEP_MAKEFILES)/common.make 
TOOL_NAME = Fraction 
$(TOOL_NAME)_OBJC_FILES = main.m Fraction.m 
include $(GNUSTEP_MAKEFILES)/tool.make 

Voici comment votre compilation ressemblera et comment fonctionne votre nouveau programme:

[email protected]:~/.../Fraction$ gs_make 

This is gnustep-make 2.6.2. Type 'make print-gnustep-make-help' for help. 
Making all for tool Fraction... 
Compiling file main.m ... 
Compiling file Fraction.m ... 
Linking tool Fraction ... 
[email protected]:~/.../Fraction$ file ./obj/Fraction 
./obj/Fraction: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xd25682721d14fd4e0fb48bb999797da28d4f8940, not stripped 
[email protected]:~/.../Fraction$ ./obj/Fraction 
The fraction is: 1/3 
[email protected]:~/.../Fraction$ 

J'utilise Debian Wheezy 7.1

Questions connexes