- Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
537 :デフォルトの名無しさん[sage]:2016/10/17(月) 10:34:16.48 ID:vi4PRwIq - >>534
> hello worldプログラムを 俺のには含まれてるぞ $ otool -L a.out a.out: /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1154.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1153.18.0) ソースは単に //hello.m #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSLog (@"Hello, World!"); return 0; }
| - Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
538 :537[sage]:2016/10/17(月) 10:40:26.72 ID:vi4PRwIq - >>534
ひょっとして、.mファイルだけど中身はまったくCのhello worldをコンパイルしたんじゃないか? objective-CはCはそのままコンパイルできる。 Objective-cの機能を使ってなければobjective-Cの ランタイムをリンクしなくてもそのまま走る。
| - Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
539 :537[sage]:2016/10/17(月) 10:54:39.51 ID:vi4PRwIq - >>537
ごめん、その例では悪かった。 それもobjective-Cの機能は使ってない。 使った例としては: #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Hello, World!"); [pool drain]; return 0; } コマンドラインでobjcのコンパイルの仕方で cc -lobjc … という例を見たのでそれを付けてたら強制的にobjcランタイムをリンクしてた。 objc機能を使ってなければこれを明記しなくても自動的にリンクされる。
|
|