ObjectiveCのソースコードをclangでコンパイルした時Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSObject", referenced from: ... のようなメッセージが出てくる
症状
#import <Foundation/NSobject.h> #import <stdio.h> int main() { id obj = [[NSObject alloc] init]; ... }
$ clang -o ref1 ref1.m Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_NSObject", referenced from: objc-class-ref in ref1-62be76.o "_objc_msgSend", referenced from: _main in ref1-62be76.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
原因
Foundation/NSobject.h
のヘッダファイルが含まれるFoundation
フレームワークを読み込む指定がない。
$ clang -o ref1 ref1.m -framework Foundation
ならいける。