title: objective c undefined symbol compilation error
body: <p>Help please! my first program in objective c. Followed a tutorial word for word but it gives me this error that I don't know quite how to read for objective c.</p>
  
  <p>SimpleCar.h:</p>
  
  <pre><code>#import &lt;Cocoa/Cocoa.h&gt;
  
  
  @interface SimpleCar : NSObject {
      NSString* make;
      NSString* model;
      NSNumber* vin;
  }
  
  // set methods
  - (void) setVin:   (NSNumber*)newVin;
  - (void) setMake:  (NSString*)newMake;
  - (void) setModel: (NSString*)newModel;
  
  // convenience method
  - (void) setMake: (NSString*)newMake
          andModel: (NSString*)newModel;
  
  // get methods
  - (NSString*) make;
  - (NSString*) model;
  - (NSNumber*) vin;
  
  @end
  </code></pre>
  
  <p>SimpleCar.m:</p>
  
  <pre><code>#import "SimpleCar.h"
  
  
  @implementation SimpleCar
  // set methods
  - (void) setVin: (NSNumber*)newVin {
  
      [vin release];
      vin = [[NSNumber alloc] init];
      vin = newVin;
  
  }
  
  - (void) setMake: (NSString*)newMake {
  
      [make release];
      make = [[NSString alloc] initWithString:newMake];
  
  }
  
  - (void) setModel: (NSString*)newModel {
  
      [model release];
      model = [[NSString alloc] initWithString:newModel];
  
  }
  
  // convenience method
  - (void) setMake: (NSString*)newMake
          andModel: (NSString*)newModel {
  
      // Reuse our methods from earlier
      [self setMake:newMake];
      [self setModel:newModel];
  
  }
  
  - (NSString*) make {
      return make;
  }
  
  - (NSString*) model {
      return model;
  }
  
  - (NSNumber*) vin {
      return vin;
  }
  
  -(void) dealloc
  {
      [vin release];
      [make release];
      [model release];
      [super dealloc];
  }
  
  @end
  </code></pre>
  
  <p>CarApp.m:</p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  #import "SimpleCar.h"
  
  int main (int argc, const char * argv[]) {
  
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  
      SimpleCar *myCar = [[SimpleCar alloc] init];
  
      NSNumber *newVin = [NSNumber numberWithInt:123];
  
      [myCar setVin:newVin];
      [myCar setMake:@"Honda" andModel:@"Civic"];
  
      NSLog(@"The car is: %@ %@", [myCar make], [myCar model]);
      NSLog(@"The vin is: %@", [myCar vin]);
  
      [myCar release];
  
    [pool drain];
  
    return 0;
  }
  </code></pre>
  
  <p>compiler call:</p>
  
  <pre><code>bash-3.2$ gcc CarApp.m SimpleCar.m -g -m64
  </code></pre>
  
  <p>error:</p>
  
  <pre><code>Undefined symbols for architecture x86_64:
    "___CFConstantStringClassReference", referenced from:
        CFString in ccR0Zlgm.o
        CFString in ccR0Zlgm.o
        CFString in ccR0Zlgm.o
        CFString in ccR0Zlgm.o
    "_objc_msgSend", referenced from:
        _main in ccR0Zlgm.o
        -[SimpleCar setVin:] in ccJfVliU.o
        -[SimpleCar setMake:] in ccJfVliU.o
        -[SimpleCar setModel:] in ccJfVliU.o
        -[SimpleCar setMake:andModel:] in ccJfVliU.o
       (maybe you meant: l_objc_msgSend_fixup_release, l_objc_msgSend_fixup_alloc )
    "_NSLog", referenced from:
        _main in ccR0Zlgm.o
    "_objc_msgSend_fixup", referenced from:
        l_objc_msgSend_fixup_alloc in ccR0Zlgm.o
        l_objc_msgSend_fixup_release in ccR0Zlgm.o
        l_objc_msgSend_fixup_release in ccJfVliU.o
        l_objc_msgSend_fixup_alloc in ccJfVliU.o
       (maybe you meant: l_objc_msgSend_fixup_release, l_objc_msgSend_fixup_alloc )
    "_OBJC_CLASS_$_NSAutoreleasePool", referenced from:
        objc-class-ref in ccR0Zlgm.o
    "_OBJC_CLASS_$_NSNumber", referenced from:
        objc-class-ref in ccR0Zlgm.o
        objc-class-ref in ccJfVliU.o
    "_objc_msgSendSuper2", referenced from:
        -[SimpleCar dealloc] in ccJfVliU.o
    "_OBJC_METACLASS_$_NSObject", referenced from:
        _OBJC_METACLASS_$_SimpleCar in ccJfVliU.o
    "__objc_empty_cache", referenced from:
        _OBJC_METACLASS_$_SimpleCar in ccJfVliU.o
        _OBJC_CLASS_$_SimpleCar in ccJfVliU.o
    "__objc_empty_vtable", referenced from:
        _OBJC_METACLASS_$_SimpleCar in ccJfVliU.o
        _OBJC_CLASS_$_SimpleCar in ccJfVliU.o
    "_OBJC_CLASS_$_NSObject", referenced from:
        _OBJC_CLASS_$_SimpleCar in ccJfVliU.o
    "_OBJC_CLASS_$_NSString", referenced from:
        objc-class-ref in ccJfVliU.o
  ld: symbol(s) not found for architecture x86_64
  collect2: ld returned 1 exit status
  </code></pre>