2009/10/14 22:04:12
プログラムのコンパイルと実行 について
▶一番初めのObjective-Cプログラム![](file:///Users/kaito_f40/Desktop/objc0201.jpg)
Song.h
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
// Songクラスの宣言
@interface Song : NSObject {
NSString *lyrics;
}
- (NSString *)lyrics;
- (void)setLyrics:(NSString *)argLyrics;
@end
Singer.h
#import <Foundation/NSObject.h>
#import <stdio.h>
#import "Song.h"
// Singerクラスの宣言
@interface Singer : NSObject {
Song *song;
}
- (void)setSong:(Song *)argSong;
- (void)sing;
@end
Song.m
#import "Song.h"
// Songクラスの実装
@implementation Song : NSObject
- (NSString *)lyrics{
return lyrics;
}
- (void)setLyrics:(NSString *)argLyrics {
lyrics = argLyrics;
}
@end
Singer.m
#import "Singer.h"
// Singerクラスの実装
@implementation Singer : NSObject
- (void)setSong:(Song *)argSong {
song = argSong;
}
- (void)sing{
printf(
"♪ %s ♪ \n",
[[song lyrics] UTF8String]);
}
@end
main.m
#import "Song.h"
#import "Singer.h""
// 実行プログラム
int main(void) {
id song;
id singer;
song = [[Song alloc] init];
[song setLyrics:@"La La La ..."];
singer = [[Singer alloc] init];
[singer setSong:song];
[singer sing];
return 0;
}
では、実際にプログラムをコンパイルして実行してみましょう。まずはMacでターミナルを起動し、先ほど作成したプログラムのソースファイルが置いてあるフォルダへ移動してください。そして以下のコマンドを1行ずつ順番に実行してみてください。
gcc -c main.m
gcc -c Song.m
gcc -c Singer.m
↑各ソースファイルがバイナリファイルへとコンパイルされる。
lsコマンドでファイルの存在を確認。
それぞれのファイルに対し、拡張子「.o」のファイルが生成される。これがバイナリファイル。
↓各ソースファイルがコンパイルできたら、次にバイナリファイルを関連付けるリンクを実行し、最終的なプログラムの実行ファイルを生成します。以下のコマンドを実行。
gcc -o myFirstProgram main.o Song.o Singer.o -framework Foundation
-o myFirstProgramの部分は、生成される実行ファイルのファイル名を指定しています。続けて、先ほどコンパイルしたバイナリファイル群を指定します。最後の-frameworkオ プションは、そのプログラムが必要とするフレームワークを指定するものです。フレームワーク側のファイルは直接プログラム内に組み込まれるわけではありま せんが、このプログラムがどのフレームワークに依存しているか(実行時に何が必要となるか)は、ここで明示しておく必要がある。lsコマンドで確認してみると、先ほど-oオプションで指定した名称の、プログラムの実行ファイルが生成されていることが分かります。では、いよいよ実行。
./myFirstProgram
♪ La La La ... ♪
先ほどは実行ファイル作成の流れを体感してみるためにあえてコンパイルとリンクを個別に行いましたが、これらを一気に実行することもできます。上記と同じ実行ファイル名で、コンパイルからリンクまでを実行する場合、コマンドは以下のようになる。
gcc -o myFirstProgram main.m Song.m Singer.m -framework Foundation
-------------------------------------------------------------------------------------------------------
Cのコンパイルのやり方をメモ・・・
PR
|ホーム|